2

写真を撮ってWebサービスに送信する必要があるアプリケーションを作成しています。私が使用するコードがあります:

i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/appicture.jpg"));
Log.i("URI", outputFileUri.toString());
i.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(i, cameraData);

URI は次のようになります。

ファイル:///sdcard/appicture.jpg

しかし、「outputFileUri」変数を i.putExtra に入れると、アプリが終了します。そうでない場合は、写真を撮ることはできますが、彼女の URI を取得できず、Web サービスに送信できません。

EDIT 1:エラーログ(アクティビティresylt上)

06-26 09:17:46.108: I/Cam エラー (699): java.lang.NullPointerException

EDIT 2:「outputFileUri」を削除すると、画像が正しく取得されました。しかし、ビットマップをファイルに変換して送信することができません。

if(resultCode == RESULT_OK){

            Bundle extras = data.getExtras();
            _bmp = (Bitmap) extras.get("data"); 

        }

編集3:

問題は

_bmp = (ビットマップ) extras.get("データ");

そして、写真はSDカードに正しく保存されています。

4

3 に答える 3

3

マニフェストにWRITE_EXTERNAL_STORAGE権限を追加します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

編集: 画像をキャプチャする目的で画像 Uri を渡す場合は、次のように画像を取得しますonActiityResult

@Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
        if (requestCode == cameraData) {  
            File picture = new File(Environment.getExternalStorageDirectory() + "/appicture.jpg"); 
            Uri imguri=Uri.fromFile(picture);
            }
        super.onActivityResult(requestCode, resultCode, data);  
    }  

画像をデータとして取得する場合はonActiityResult、Camra を次のように起動します。

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
startActivityForResult(intent, cameraData);  

onActivityResult で:

 onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (requestCode == 1) {  
            if (resultCode == cameraData) {  
                Bundle extras = data.getExtras();
                _bmp = (Bitmap) extras.get("data"); //Get data here

            }  
        }  
}  
于 2012-06-26T08:46:21.820 に答える
1

すでにアクセス許可を追加しており、パスが正しい場合。パスの末尾にある「.jpg」を削除してみてください。

于 2012-06-26T08:59:25.093 に答える
1

これをマニフェスト ファイルに追加してください

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

幸せなコーディング..

于 2012-06-26T08:47:25.017 に答える