0

シンプルだが機能するカスタム カメラ アプリケーションを構築することができました。これまでのところ、直接起動して写真を撮ることができます。また、適切なインテント フィルターを追加して、次のようなコード行を含む別のアプリケーションのインテント コールに応答できるアプリケーションとして公開しました。Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

問題は、保存用の URI を渡す外部アプリに画像を送り返すようにカメラ アプリをコーディングするにはどうすればよいかということです。

現在、カメラが直接起動されたか、インテント フィルターに応答するために呼び出されたかを検出するメソッドがあります。このメソッドはisImageCaptureIntent(機能しています)。

onPictureTakenのメソッドに何かを記述する必要があると思いますがPictureCallback、OutputStrems に書き込もうとすると、すべての試行が NullPointerExceptions で停止します。

mSaveUriこのコード行から、呼び出し元のアプリケーションによって提供された適切な URI が既に入力されていることに注意してください。mSaveUri = (Uri) myExtras.getParcelable( MediaStore.EXTRA_OUTPUT );

メソッドは次のとおりです。

 PictureCallback myPictureCallback_JPG = new PictureCallback() {

    @Override
    public void onPictureTaken(final byte[] arg0, Camera arg1) {);

        if (isImageCaptureIntent()) {

            if (mSaveUri != null) {
                OutputStream outputStream = null;
                try {
                    outputStream = getContentResolver()
             .openOutputStream(mSaveUri);  <== HERE I GET NullPointerException
                    outputStream.write(arg0);
                    outputStream.close();
                    setResult(RESULT_OK);
                    finish();
                } catch (IOException ex) {
                    // ignore exception
                } finally {
                }
            } 
        }
        camera.startPreview();
    }
};
4

2 に答える 2

0

これと同様の質問があります。1 つの投稿では、htc デバイスの問題であると書かれています。ここ:

いずれにせよ、画像をキャプチャするリクエストを送信し、そのパスを受け取り、ファイルに MODE_WORLD_READABLE を使用するか、外部ストレージ パスを使用することをお勧めします。

于 2012-05-17T19:45:01.677 に答える