Android 如何使用自定义照相机拍摄照片并在其他活动中显示?
请帮助我如何从自定义相机拍摄照片并在其他活动中显示,请给我更详细的答案,我应该放什么代码,在哪里,请告诉我我应该创建什么类型的变量、int、string、boolean,Android 如何使用自定义照相机拍摄照片并在其他活动中显示?,android,android-activity,camera,photo,Android,Android Activity,Camera,Photo,请帮助我如何从自定义相机拍摄照片并在其他活动中显示,请给我更详细的答案,我应该放什么代码,在哪里,请告诉我我应该创建什么类型的变量、int、string、boolean, 这是我的密码: 主要活动: @Override public void onPictureTaken(byte[] data, Camera camera) { final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
这是我的密码: 主要活动:
@Override
public void onPictureTaken(byte[] data, Camera camera) {
final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// Store bitmap to local storage
FileOutputStream out = null;
try {
// Prepare file path to store bitmap
// This will create Pictures/MY_APP_NAME_DIR/
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MY_APP_NAME_DIR");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(Constants.LOG_TAG, "failed to create directory");
return null;
}
}
// Bitmap will be stored at /Pictures/MY_APP_NAME_DIR/YOUR_FILE_NAME.jpg
String filePath = mediaStorageDir.getPath() + File.separator + "YOUR_FILE_NAME.jpg";
out = new FileOutputStream(filePath);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
您可以使用接口将\u文件\u路径从CameraPreview类传递到MainActivity类。
然后在MainActivity.java中
Intent i = new Intent(this, EditPicture.class);
i.putExtra("FILE_PATH", YOUR_FILE_PATH);
startActivity(i);
画中画活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().hasExtra("FILE_PATH")) {
String filePath = getIntent().getStringExtra("FILE_PATH");
// Read bitmap from local file
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
yourImageView.setImageBitmap(bitmap);
}
}
最后,将
添加到您的AndroidManifest.xml中,以允许您的应用程序写入外部存储
这是如何将位图写入外部存储器的示例。如果要存储到内部存储,如缓存或其他选项,请参阅
如果您需要我详细说明,请告诉我。尚未通读,但您能否将图像数据存储到本地文件存储,并将捆绑路径传递给活动?在第二个活动中,您可以读取本地文件存储。我使用bundle进行了尝试,但无法将其保存到本地文件存储,idk为什么,它不会显示,它会在测试时关闭我的应用程序您在发送之前尝试存储?您基本上只需要通过bundle将字符串路径传递给本地文件。在存储之前,你可能需要考虑压缩。你能给我一个代码的例子吗?因为我不太明白你在说什么。我似乎可以理解,我只有2个小问题,“文件路径”和“Youl FielePixPipe”,因为我是一个C++的开发人员,学习Android已经4个月了,我从来没有做过照片,现在这让我有很多问题,我如何设置它们(文件路径)和你的文件路径?更新了答案。“FILE_PATH”是bundle的字符串标记。你可以随意命名。您只需要为putExtra和GetStringExtra谢谢使用相同的字符串标记,但是您的文件路径是什么?很抱歉问这么多,我知道这很烦人,但我必须在本周完成这个应用程序。我更新了代码,这样您的\u文件\u路径就不存在了:)您可以再次引用代码,看看如何获取路径。我将意图作废,并在使用onclick方法拍照后调用,效果很好,但活动启动,没有显示照片,我该怎么办?