请帮我如何从自定义相机拍照并将其显示在另一个活动上,请给我更详细的答案,我应该放什么代码,哪里,请告诉我是什么样的变量,int,字符串我应该创造布尔人,
这是我的代码:
主要活动:
答案 0 :(得分:0)
@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();
}
}
}
您可以使用interface将YOUR_FILE_PATH从CameraPreview类传递到MainActivity类。 然后在MainActivity.java
Intent i = new Intent(this, EditPicture.class);
i.putExtra("FILE_PATH", YOUR_FILE_PATH);
startActivity(i);
在EditPicture活动中
@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);
}
}
最后,将<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
添加到AndroidManifest.xml中,以便让您的应用可以写入外部存储空间。
这是如何将位图写入外部存储器的示例。如果要存储到内部存储(如缓存或其他选项),请参阅http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
如果您需要我详细说明,请告诉我。