首页 > 代码库 > andorid在 Fragment中调用摄像机
andorid在 Fragment中调用摄像机
我现在一个activity中有三个multiple fragments ,我现在采集我第三个 fragments信息
在这个fragments 上我想启动相机或者图库,看下面代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | public Intent getImageIntent() { // Camera. final List<Intent> cameraIntents = new ArrayList<Intent>(); final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); final PackageManager packageManager = context.getPackageManager(); final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0 ); for (ResolveInfo res : listCam) { final String packageName = res.activityInfo.packageName; final Intent intent = new Intent(captureIntent); intent.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); intent.setPackage(packageName); cameraIntents.add(intent); } // Filesystem. final Intent galleryIntent = new Intent(); galleryIntent.setType( "image/*" ); galleryIntent.setAction(Intent.ACTION_GET_CONTENT); // Chooser of filesystem options. final Intent chooserIntent = Intent.createChooser(galleryIntent, "Select Source" ); // Add the camera options. chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray( new Parcelable[] {})); // Calling activity should exeecute: // startActivityForResult(chooserIntent, 1); return chooserIntent; } After that the onActivityResult executes: private void handleSmallCameraPhoto(Intent intent) { Bundle extras = intent.getExtras(); mProductBitmap = (Bitmap) extras.get( "data" ); imgProduct.setImageBitmap(mProductBitmap); } |
其中 mProductBitmap 是一个Bitmap类型的全局变量,imgProduct 是一个已经初始化的 ImageView ,
我现在有如下问题:
1、相机选项强制关闭了app.并在fragment 中报错了nullpointException
2、图册选项不报错,但是不显示任何图片
3、有的时候 在执行完onActivityResult 之后Context 为null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | @Override public void onActivityResult( int requestCode, int resultCode, Intent intent) { if (resultCode == Activity.RESULT_OK) { handleSmallCameraPhoto(intent); } else { if (requestCode == 1 ) { InputStream stream = null ; if (intent == null ) { System.out.println( "DATA IS NULL.." ); } else { try { if (mProductBitmap != null ) { mProductBitmap.recycle(); } stream = getActivity().getContentResolver().openInputStream( intent.getData()); mProductBitmap = BitmapFactory.decodeStream(stream); System.out.println(mProductBitmap); System.out.println( "Setting image result" ); imgProduct.setImageBitmap(mProductBitmap); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (stream != null ) try { stream.close(); } catch (IOException e2) { e2.printStackTrace(); } } } } } |
处理方法
你的图片已经报错到了 PATH_TO_SAVE 地址中
你需要在你的onActivityResult 方法中做么做
File file = new File(PATH_TO_SAVE);
Bitmap bmp = BitmapFactory.decodeFile(file.getPath());
原文地址:http://www.itmmd.com/201411/158.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。
andorid在 Fragment中调用摄像机
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。