Androidの場合、hereのようにこの基本設定で写真を撮ることができます。ACTION_IMAGE_CAPTUREインテントを使用しているときにAndroidカメラの動作を正しくキャッチする方法
protected void dispatchTakePictureIntent(){
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
...
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
//do stuff with the output file
}
}
ただし、third-party camera apps are unpredictable and cannot be guaranteed to play niceです。
出力の検証/エラーをキャッチする正しい方法は何ですか?私はtry/catchブロックの内側にstartActivityForResult
を入れるべきですか?キャッチしようとしているはずのさまざまなタイプの例外とは何ですか?また、私はそれらと何をすべきですか?
、私はまだ私が今グーグルに基づいて' Uri'の使用に慣れていないよ、あなたは 'ウリmyUri =ウリのようなものをかどうかを確認するために言っています。 parse(data.getExtras()。getString(MediaStore.EXTRA_OUTPUT)); '' file: '型を含む' Uri'を与えますか? – KaliMa
@KaliMa:いいえ、 'onActivityResult()'に渡された 'Intent'の' getData() 'が' Uri'を返すのではないでしょうか。私は、カメラアプリケーションが 'onActivityResult()'経由で 'EXTRA_OUTPUT'を余分に使ってあなたに' Intent'を送ることができたとは思っていませんが、そのシナリオについては聞いていません。私は、 'Uri'を' Intent'自身の 'Uri'として送るカメラアプリについて聞いたことがあります。 – CommonsWare
しかし、 'takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT、Uri.fromFile(photoFile));を指定した場合、 '結果の画像ファイルが' onActivityResult() 'のどこにあるのかはすでに分かっていませんか?それとも、どこのアプリでもそれを完全に無視してどこにでも置くことができますか? – KaliMa