如何为所有Android设备创建通用的相机动作
在我的应用程序中,我想使用相机捕获图像并发送到服务器。
当用户打开我的应用程序的相机部分时,我想向他显示他正在使用的设备的默认相机。 目前以下是我用来捕捉图像的两行代码
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, TAKE_RECEIPT);
当我在HTC设备中运行此代码时,在捕获图像后,它显示了带有完成和重拍按钮的图像预览。 当我点击完成后,它将移至上一个活动。
当我在moto设备中使用代码时,在捕获图像后,它显示了带有插入,重新拍摄和取消的图像预览。 当我点击完成后,它将移至上一个活动。
像这样,所有设备都会有所不同。 因此,当我点击任何设备的完成或插入或任何其他按钮正面按钮时 ,我想开始上传过程。
如何处理请帮帮我….
您可以使用以下代码来解决您的问题……
protected void startCameraActivity() { // TODO Auto-generated method stub Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri ); startActivityForResult( intent, 0 ); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch( resultCode ) { case 0: break; case -1: onPhotoTaken(); break; } } protected void onPhotoTaken() { ///write code here what you want to done after capture the image using device camera } @Override protected void onRestoreInstanceState( Bundle savedInstanceState) { if( savedInstanceState.getBoolean( add_project1.PHOTO_TAKEN ) ) { onPhotoTaken(); } } @Override protected void onSaveInstanceState( Bundle outState ) { outState.putBoolean( add_project1.PHOTO_TAKEN, _taken ); }
我不确定问题是否只是关于如何在捕获后上传图像..但如果只是它,我将为您提供一个解决方案,以便在您从捕获意图返回到您的活动后处理它。
您可以在启动捕获意图时指定保存图像的路径:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(Environment.getExternalStorageDirectory(), "image.jpg"); outputFileUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, TAKE_RECEIPT);
然后,您可以在onActivityResult中处理上传:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == TAKE_RECEIPT) { if (resultCode == Activity.RESULT_OK) { // user took a picture, upload it // outputFileUri contains the uri to your file // you should delete it when the upload completes } else if (resultCode == Activity.RESULT_CANCELED) { //user canceled - do nothing } } }
实际上当我们在Google nexus 1设备上运行此代码时问题就到了,因为它捕获图像然后当我们点击完成按钮exception时出现..这是Uri中的空指针SelectedImage = data.getData();
- 使用opencv的Android应用程序:如何在不覆盖的情况下保存图像?
- 媒体播放器在R.raw上失败 – Android
- Android:java.lang.RuntimeException:takePicture失败
- Android Wear和智能手机之间的数据传输安全性
- 如何获取多个Edit Text addview android的值并将其发送到MySQL
- 序列化循环对象树 – StackOverflowError – 需要自定义序列化代码
- Dagger 2 – 使用@Named无法正常注入多个相同类型的对象
- java.lang.noclassdeffounderror:com.google.android.gms.R $ styleable没什么帮助我的
- 如何解决布局中更多数字的Editext并从中获取价值?