2011-03-31 14 views
0
String strAvatarPrompt = "Take your picture to store as your avatar!"; 
    Intent pictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUriToSaveCameraImageTo); 
    startActivityForResult(Intent.createChooser(pictureIntent, strAvatarPrompt), TAKE_AVATAR_CAMERA_REQUEST); 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
     case TAKE_AVATAR_CAMERA_REQUEST: 
      if (resultCode == Activity.RESULT_CANCELED) { 
      } 
      else if (resultCode == Activity.RESULT_OK) { 
       Bitmap cameraPic = (Bitmap) data.getExtras().get("data");   

       if (cameraPic != null) { 
        try { 
         saveAvatar(cameraPic); 
        } 

私は自分のアプリのユーザーが写真を撮るためのコードを用意しています。それはHTCの欲望でうまく動作します。しかし、サムスン銀河では、ポイントでクラッシュする
ビットマップcameraPic =(ビットマップ)data.getExtras()。get( "data");Samsung Galaxyが返さない(ビットマップ)data.getExtras()。get( "data");

なぜ動作しないのですか?

Stack-

03-31 16:35:15.593: VERBOSE/WindowManager(2497): Delivering toWindow{47fe4340 com.sec.android.app.camera/com.sec.android.app.camera.CropImage paused=false} 
03-31 16:35:15.761: VERBOSE/WindowManager(2497): Delivering toWindow{47fe4340 com.sec.android.app.camera/com.sec.android.app.camera.CropImage paused=false} 
03-31 16:35:15.761: VERBOSE/CropImage(6885): Crop = no, Return = specified uri 
03-31 16:35:15.773: VERBOSE/CropImage(6885): onPause 
03-31 16:35:15.780: ERROR/WindowManager(2497): Overwriting rotation value from 1 
03-31 16:35:15.780: VERBOSE/WindowManager(2497): Rotation changed to 1 from 0 (forceApp=0, req=0) 
03-31 16:35:15.784: INFO/WindowManager(2497): Setting rotation to 1, animFlags=1 
03-31 16:35:15.800: ERROR/SurfaceFlinger(2497): Surface Flinger::setOrientation mIsRotationPossible = 0, nBackupOrientationValue = 1 
03-31 16:35:15.804: INFO/TvOut-Observer(2497): setTvoutOrientation rotation = 1 
03-31 16:35:15.804: ERROR/TvOut-Observer(2497): SetOrientation 
03-31 16:35:15.804: INFO/ActivityManager(2497): Config changed: { scale=1.0 imsi=234/10 loc=en_GB touch=3 keys=1/1/2 nav=1/1 orien=2 layout=35 uiMode=17 seq=96 FlipFont=0} 
03-31 16:35:15.808: DEBUG/PhoneApp(2588): updateProximitySensorMode: state = IDLE 
03-31 16:35:15.855: DEBUG/OPPBaseService(7980): [main/1] onConfigurationChanged() 
03-31 16:35:15.870: VERBOSE/Camera(5292): --onActivityResult--requestCode: 2001 
03-31 16:35:15.870: VERBOSE/Camera(5292): --onActivityResult--resultCode: -1 
03-31 16:35:15.870: VERBOSE/Camera(5292): --onActivityResult--data: Intent { act=inline-data (has extras) } 
03-31 16:35:15.882: WARN/ActivityManager(2497): Duplicate finish request for HistoryRecord{481527f8 com.sec.android.app.camera/.Camera} 
03-31 16:35:16.038: VERBOSE/CropImage(6885): onDestroy 
+0

'data'がアクセスする前に' null'でないことを確認してください。 –

+1

スタックトレースはどうですか? – ernazm

+0

@willytateデータは、ちょうどイメージを撮ったので、nullであってはなりません。私はそれがnullのthatsの問題を返すと思う – Beginner

答えて

2

一部のデバイスには、余分なデータを返しません。他の人は余分なサムネイルを返すだけです。コールバックで利用可能な場合はEXTRA_OUTPUTのSDカードの場所(既に元の意図でリクエストしています)からファイルを読み取ることをお勧めします。EXTRA_OUTPUTを読み取ることができない場合にのみ、余分なデータに戻ってください。 this related SO questionを参照してください。

関連する問題