我正在编写一个更大的Android应用程序,并在应用程序中使用相机。我想用相机做的就是让用户拍一张照片,然后开始一个新的活动来显示该图像,并让用户决定是否保留该图像。我最难弄清楚如何简单地存储onPictureTake方法中的byte[]数据,以便在下一个活动中向用户显示它。我尝试过很多不同的路线,但都没有成功。我尝试的最后一件事是创建一个扩展Application类的globalsettings类,并在其中创建一个byte[]字段来存储相机中的byte[],这样我就可以在另一个活动中使用它,但我的全局变量仍然没有设置好。我的CameraActivity代码如下所示:
public class CameraActivity extends Activity
{
CameraPreview Preview;
Intent intent;
byte[] image;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.cameralayout);
Preview = new CameraPreview(this);
((FrameLayout)findViewById(R.id.uxfmlayPreview)).addView(Preview);
intent = new Intent(this, PostCaptureActivity.class);
}
public void uxbtnCaptureSnap_Click(View v)
{
Preview.DeviceCamera.setPreviewCallback(null);
Preview.DeviceCamera.takePicture(shutterCallback, rawCallback, jpegCallback);
startActivity(intent);
finish();
}
public void uxbtnCaptureExit_Click(View v)
{
Intent i = new Intent(this, ExploreMenuActivity.class);
setResult(RESULT_OK);
startActivity(i);
finish();
}
ShutterCallback shutterCallback = new ShutterCallback()
{
public void onShutter() {}
};
PictureCallback rawCallback = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera) {}
};
PictureCallback jpegCallback = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
((GlobalSettings)getApplication()).setGlobalImage(data);
camera.release();
camera = null;
}
};
}
以下是我的PostCaptureActivity onCreate()方法中的代码,我试图将图像转换并设置为imageview的源:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.postcapturelayout);
SnapShot = ((ImageView)findViewById(R.id.uximgSnapshot));
if(((GlobalSettings)this.getApplication()).getGlobalImage() != null)
{
Bitmap b = BitmapFactory.decodeByteArray(((GlobalSettings)this.getApplication()).getGlobalImage(), 0, ((GlobalSettings)this.getApplication()).getGlobalImage().length);
SnapShot.setImageBitmap(b);
}
else
{
Toast.makeText(this, "Oops! Picture cannot be saved", Toast.LENGTH_SHORT).show();
}
}
使用Intent:怎么样
intent = new Intent(this, PostCaptureActivity.class);
intent.putExtra("image", data);
startActivity(intent);
finish();
将其放入onPictureTaken
方法中。