iv_camera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //创建File对象,用于存储拍照后的图片 File outputImage = new File(getExternalCacheDir(), System.currentTimeMillis() + ".jpg"); imagePath = outputImage.getPath(); try { if (outputImage.exists()) { outputImage.delete(); } outputImage.createNewFile(); } catch (IOException e) { e.printStackTrace(); } if (Build.VERSION.SDK_INT >= 24) { imageUri = FileProvider.getUriForFile(MainActivity.this, "com.exampleytpeak.paizhao.fileprovider", outputImage); } else { imageUri = Uri.fromFile(outputImage); } // 启动相机 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, REQUEST_CAPTURE); } });
时间: 2023-12-25 17:05:57 浏览: 34
这是一个 Android Studio 中的代码段,主要是实现一个拍照按钮的点击事件。当用户点击该按钮时,程序会创建一个File对象用于存储拍摄后的照片。然后,通过判断当前设备的Android版本是否大于等于24,来选择使用FileProvider获取照片的Uri,还是使用旧版方式获取Uri。最后,使用Intent启动相机应用,拍摄照片并将其保存到指定的路径中。完成照片拍摄后,程序会返回一个结果码,用于判断照片是否拍摄成功。
相关问题
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); write_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { writeFile(write_ed.getText().toString()); write_ed.setText(""); } }); read_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { read_tv.setText(readFile()); } }); }
这是一段 Android Studio 中的 Java 代码,它是在 onCreate 方法中对两个按钮进行了设置,分别是 write_btn 和 read_btn,当点击 write_btn 按钮时,会调用 writeFile 方法将 write_ed 中的文本写入文件中,并清空 write_ed 文本框;当点击 read_btn 按钮时,会调用 readFile 方法读取文件中的文本,并将其显示在 read_tv 文本框中。
public class MainActivity extends AppCompatActivity { private TextView resultText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resultText = findViewById(R.id.result_text); findViewById(R.id.btn_0).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("0"); } }); findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("1"); } }); // 添加其他数字按钮的 onClickListener findViewById(R.id.btn_add).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("+"); } }); findViewById(R.id.btn_subtract).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("-"); } }); // 添加其他运算符按钮的 onClickListener findViewById(R.id.btn_clear).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearText(); } }); findViewById(R.id.btn_equals).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { calculate(); } }); } private void appendText(String text) { resultText.append(text); } private void clearText() { resultText.setText(""); } private void calculate() { try { String expression = resultText.getText().toString(); Expression e = new ExpressionBuilder(expression).build(); double result = e.evaluate(); resultText.setText(Double.toString(result)); } catch (IllegalArgumentException ex) { resultText.setText("Error"); } }}
这是一个简单的计算器应用程序的主要代码。它使用了一个第三方库,即“expr-eval”,来解析算术表达式并计算结果。在 onCreate() 方法中,它设置了数字和运算符按钮的 onClickListener,并分别调用了 appendText()、clearText() 和 calculate() 方法。在 appendText() 方法中,它向结果文本框中添加新的字符。在 clearText() 方法中,它简单地将结果文本框的内容设置为空。在 calculate() 方法中,它首先获取结果文本框中的表达式,然后使用 ExpressionBuilder 类构建一个 Expression 对象,该对象表示表达式的树形结构。最后,它调用 evaluate() 方法来计算表达式的结果,并将结果设置为结果文本框的内容。如果表达式无效,则 catch 语句将捕获 IllegalArgumentException 异常,并将结果文本框的内容设置为“Error”。
阅读全文