Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓系统中摄像机的图像意图问题_Android_Facebook_Android Camera - Fatal编程技术网

Android 安卓系统中摄像机的图像意图问题

Android 安卓系统中摄像机的图像意图问题,android,facebook,android-camera,Android,Facebook,Android Camera,我正在将facebook与android集成,我想在使用phot时,将其保存到SD卡,然后上传到facebook 这是我的密码: photo_up=(Button)findViewById(R.id.camera_foto_button); photo_up.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {

我正在将facebook与android集成,我想在使用phot时,将其保存到SD卡,然后上传到facebook

这是我的密码:

photo_up=(Button)findViewById(R.id.camera_foto_button);
            photo_up.setOnClickListener(new View.OnClickListener() {
                   public void onClick(View v) {
                       final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
                       intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(PlaceScreen.this)) );   
                       startActivityForResult(intent,CAMERA_REQUEST); 
                   }
                });

 private File getTempFile(Context context){  
          //it will return /sdcard/image.tmp  
          final File path = new File( Environment.getExternalStorageDirectory(), context.getPackageName() );  
          if(!path.exists()){  
            path.mkdir();  
          }  
          return new File(path, "image.png");  
        } 
结果呢

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    switch(requestCode){
                case CAMERA_REQUEST:{
                    final File file = getTempFile(this);  
                    try {  
                      bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.fromFile(file) );  
                      // do whatever you want with the bitmap (Resize, Rename, Add To Gallery, etc)  
                    } catch (FileNotFoundException e) {  
                      e.printStackTrace();  
                    } catch (IOException e) {  
                      e.printStackTrace();  
                    }  


                    ByteArrayOutputStream stream = new ByteArrayOutputStream();        
                    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);         
                    byteArray = stream.toByteArray(); // convert camera photo to byte array  
                    Bundle params = new Bundle();       
                    params.putByteArray("picture", byteArray);      
                    params.putString("message", "Have fun");       
                    Utility.mAsyncRunner.request("me/photos", params,
                            "POST", new PhotoUploadListener(), null);
                    break;
                }
所以发生的事情是这样的:摄像机打开,imagae被捕获并保存,但我得到了一个力接近,它并没有上传到fb上

我也在手机上查过了。Logcat在这里:

05-31 02:50:19.437: E/AndroidRuntime(2470): FATAL EXCEPTION: main
05-31 02:50:19.437: E/AndroidRuntime(2470): java.lang.RuntimeException: Unable to resume activity {com.myname.package/com.myname.package.PlaceScreen}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.myname.package/com.myname.package.PlaceScreen}: java.lang.NullPointerException
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2836)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.access$1600(ActivityThread.java:117)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.os.Looper.loop(Looper.java:130)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.main(ActivityThread.java:3687)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at java.lang.reflect.Method.invokeNative(Native Method)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at java.lang.reflect.Method.invoke(Method.java:507)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at dalvik.system.NativeStart.main(Native Method)
05-31 02:50:19.437: E/AndroidRuntime(2470): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.myname.package/com.myname.package.PlaceScreen}: java.lang.NullPointerException
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2536)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2111)
05-31 02:50:19.437: E/AndroidRuntime(2470):     ... 13 more
05-31 02:50:19.437: E/AndroidRuntime(2470): Caused by: java.lang.NullPointerException
05-31 02:50:19.437: E/AndroidRuntime(2470):     at com.myname.package.PlaceScreen.onActivityResult(PlaceScreen.java:325)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.Activity.dispatchActivityResult(Activity.java:3908)
05-31 02:50:19.437: E/AndroidRuntime(2470):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
05-31 02:50:19.437: E/AndroidRuntime(2470):     ... 14 more
编辑:


好的,我的bmp在哪里是空的。为什么呢?怎么了

bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.fromFile(file) );  
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 

有人能找出为什么我的bmp是空的,而我可以看到画廊中的图像。这意味着图像是正常拍摄的,但bmp=MediaStore.Images.Media的结果是什么也得不到,同时使用网络上可用的通用代码调用相机并拍摄照片并重试,我当时在三星设备上遇到了一些问题,同样的错误发生了
无法提供结果信息
,无法找到任何解决方案,这可能是因为任何API级别或设备依赖性

但为了克服它,我用另一种方式编写了代码来完成任务,代码如下:

1) 呼叫摄像机

        String _path = Environment.getExternalStorageDirectory()
        + File.separator + "TakenFromCamera.png";
        File file = new File(_path);
        Uri outputFileUri = Uri.fromFile(file);
        Intent intent = new Intent(
        android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
        startActivityForResult(intent, 1212);
2) 在ActivityResult中获取位图

            if (requestCode == 1212) {
                String _path = Environment.getExternalStorageDirectory()
                + File.separator + "TakenFromCamera.png";
                mBitmap = BitmapFactory.decodeFile(_path);
                if (mBitmap == null) {
                    // bitmap still null
                } else {
                    // set bitmap in imageview
                }
            }

异常给出了一个非常明确的提示:PlaceScreen.java.Ok my bmp的第325行中有一些内容为null,其中为null。为什么呢?怎么了?bmp=MediaStore.Images.Media.getBitmap(this.getContentResolver(),Uri.fromFile(file));bmp.compress(Bitmap.CompressFormat.PNG,100,流);围绕
getBitmap()
方法的try/catch块是否触发
FileNotFoundException
IOException
?你能用DDMS验证文件是否确实在SD卡上请求的位置(我知道你可以在图库中看到它,但这并不意味着它保存在你要求保存的位置)。对不起,这是我第一次给文赏金。。干杯它不起作用。位图始终为空,没有任何原因。权限-确定