2012-03-23 8 views
0

私はgraphics.Cameraについて学んでいます。そして、私はカメラで写真を撮影していると私は不変のビットマップイメージを設定するとエラーが発生しますか?

にキャンバスとして撮影された写真「ビットマップイメージ」を設定すると、アプリケーションcrashsとlogcatは、「ビットマップ

画像が不変である」と言います。実際には、私は何を意味するのか分からない?なにか提案を?

ありがとうございます。

コード空隙onActivityResult(INT requestCode、INT resultCodeが、インテントデータ){

if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) { 
      image = (Bitmap) data.getExtras().get("data"); 
      ImageView img01 = (ImageView) findViewById(R.id.img01); 
      //img01.setImageBitmap(image); 

      c = new Camera(); 
      can = new Canvas(); 
      can.setBitmap(Bitmap.createBitmap(image)); 
     } 
} 

LogCaat保護

OnClickListener btn01Listener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent CameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(CameraIntent, CAMERA_PIC_REQUEST);   
    } 
}; 

03-23 20:46:16.188: E/AndroidRuntime(452): FATAL EXCEPTION: main 

3月23日午後8時46分:16.188:E/AndroidRuntime(452):java.lang.RuntimeException:Unableアクティビティを再開する{com.androidbook.Camera3DDemo/com.androidbook.Camera3DDemo.Camera3DDemoActivity}:java.lang.RuntimeException:結果の配信に失敗しましたResultInfo {who = null、request = 0、result = -1、data = Intent {act = inline - データ(補足あり))}アクティビティ{com.androidbook.Camera3DDemo/com.androidbook.Camera3DDemo.Camera3DDemoActivity}:java.lang.IllegalStateException 03-23 20:46:16.188:E/AndroidRuntime(452):android .app.ActivityThread.performResumeActivity(ActivityThread.java:2120) 03-23 20:46:16.188:E/AndroidRuntime(452):android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135) 03-23 20 :46:16.188:E/AndroidRuntime(452):android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668) 03-23 20:46:16.188:E/AndroidRuntime(452):android.app.ActivityThread .handleRelaunchActivity(ActivityThread.java:2832) 03-23 20:46:16.188:E/AndroidRuntime(452):android.app.ActivityThread.access $ 1600(ActivityThread.java:117) 03-23 20:46:16.188:E/AndroidRuntime(452): android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935) 03-23 20:46:16.188:E/AndroidRuntime(452):android.os.Handler.dispatchMessage(Handler.java:99) 03/23 20:46:16.188:E/AndroidRuntime(452):android.os.Looper.loop(Looper.java:130) 03-23 20:46:16.188:E/AndroidRuntime(452):android .App.ActivityThread.main(ActivityThread.java:3683) 03-23 20:46:16.188:E/AndroidRuntime(452):java.lang.reflect.Method.invokeNative(ネイティブメソッド) 03-23 20: 46:16.188:E/AndroidRuntime(452):java.lang.reflect.Method.invoke(Method.java:507) 03-23 20:46:16.188:E/AndroidRuntime(452):com.android .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 03-23 20:46:16.188:E/AndroidRuntime(452):com.android.internal.os.ZygoteInit.main(ZygoteInit.java) :597) 03-23 20:46:16.188:E/AndroidRuntime(452):dalvik.system.NativeStart.main(ネイティブメソッド) 03-23 20:46:16.188:E/AndroidRuntime(452):原因結果の配信失敗ResultInfo {who = null、request = 0、result = -1、data =インテント{act =インラインデータ(エクストラがある)}}アクティビティ{com.androidbook.Camera3DDemo/com.androidbook.Camera3DDemo.Camera3DDemoActivity}:java.lang.IllegalStateException 03-23 20:46:16.188:E/AndroidRuntime(452):android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 03-23 20:46:16.188:E/AndroidRuntime(452):android.app.ActivityThread.performResumeActivity(ActivityThread.java:2107) 03-23 20:46:16.188:E/AndroidRuntime(452):... 13もっと詳しく 03-23 20:46:16.188:E/AndroidRuntime(452):原因:java.lang。(452):android.graphics.Canvas.setBitmap(Canvas.java:144) 03-23 20:46:16.188:E/AndroidRuntime(452):IllegalStateExceptionが発生しました。 46:16.188:E/AndroidRuntime(452):android.app.Activity.dispatchActivityResult(Activity.java:3908) でcom.androidbook.Camera3DDemo.Camera3DDemoActivity.onActivityResult(Camera3DDemoActivity.java:43) 3月23日20時3月23日20:46:16.188:E/AndroidRuntime(452):android.app.ActivityThread.deliverResults(ActivityThread.java:2528)で 3月23日20:46:16.188:E/AndroidRuntime(452):..より。14

答えて

1

実はそれはあなたがビットマップを変更する権限がないことを意味します。だから、キャンバスなどにペイントするために使用することができ、あなたの提供ビットマップの変更可能なコピーを作成する必要があります。

Bitmap.createBitmap(yourBitmap); 
+0

iがonActivityResult()メソッドを変更しましたが、まだアプリが – Androelpha

+0

は、エラー・ログを提供することができcrashs:

あなたは、このメソッドを使用して行うことができますか? 'canvas.setbitmap('ながら、不変のマップを返します) '可変1を必要とし – Tim

+0

は – Androelpha

関連する問題