2011-08-11 12 views
3

私の2〜3つのアプリケーションでは、アプリケーションからカメラアクティビティを使用する必要があります。ユーザーがカメラを使用して写真を撮影し、その画像を画像ビューで設定する。AndroidアプリケーションでDroid Xでカメラを使用するには

Droid Xを除くすべてのデバイスで動作します。ユーザーがDroid Xモバイルから写真を撮ると、アプリケーションは強制終了されます。ここで

開始カメラの活動のための私のコードは次のとおりです。

public void startCameraActivity() 
{ 
    _path = Environment.getExternalStorageDirectory() + "/default.jpg"; 
    File file = new File(_path); 
    Uri outputFileUri = Uri.fromFile(file); 

    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_PIC_REQUEST) { 
     _taken = true; 

     bita = BitmapFactory.decodeFile(_path); 
     imv.setImageBitmap(bita); 
    } 
}   

だから私はドロイドXに成功したカメラのアクティビティを実行するために何をすべきか?私は問題が何かを見つけることができませんでした。

+0

あなたの問題は、ビットマップのためメモリ不足です。それに基づいて検索します。 –

+0

これに関連する解決策はありますか?もし解決策があれば助けてください。 – Kutbi

+0

ビットマップリサイクルを検索してください。あなたはリサイクルする方法とヌルビットマップを見つけるでしょう。あなたはそれに応じてそれをしなければなりません。説明するのは少し複雑です。メモリ不足に基づいていくつかの調査を行います。 –

答えて

0

Androがこれと他の同様の投稿にコメントしたので、ここの問題はメモリの問題ではありません。

この問題は、単にドロイドXのカメラの意図が他のデバイスとどのように異なるかに関係しています。

私の場合、「intent.putExtra(MediaStore.EXTRA_OUTPUT、imageUri);」を使用してカメラに渡した指定URIを取得しようとすると、NullPointerExceptionが発生しました。一部のデバイスカメラはこの余分なものを適切に取り込まず、これらのケースは別々に処理する必要があります。 (受け入れられた回答hereを参照)。

また私の場合、2.3.3を実行しているDroid Xでは、返されたインテントもnullでした。私のデバッガは、カメラの意図の間に切り離され、私のコントロールの外に何かが間違っていたことを示します。私ができることは、受け入れられた答えhereに従うことです。

私は希望のimageUriがnullで、返されたインテントがnullだったためにキャプチャを追加しました。最も最近の写真を取得するロジックを追加しました(例としてthisを使用)。

if (imageUri == null) { 

    String[] projection = new String[] { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA, MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images.ImageColumns.MIME_TYPE }; 
    final Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC"); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    fileUri = cursor.getString(column_index); 
} 

私はこれが助けてくれることを願っています!

関連する問題