1

私はアンドロイドが初めてです。今、私は次を使用して画像キャプチャ機能を実行しています:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );

問題は、写真をキャプチャした後、新しくキャプチャした写真が画像表示ページに表示されないことです。

新しい写真をキャプチャしたときに画像表示ページを更新できるように、Android を更新するのに役立つコードや必要な手順がある場所を知っている人はいますか?

どんな助けでも大歓迎です。最初にあなたに感謝します。

更新された回答:私はこれを使用していますが、これは他の人に役立つかもしれません:

                mScanner = new MediaScannerConnection(
                Camera.this,
                new MediaScannerConnection.MediaScannerConnectionClient() {
                    public void onMediaScannerConnected() {
                        mScanner.scanFile(outputFileUri.getPath(), null /* mimeType */);
                    }

                    public void onScanCompleted(String path, Uri uri) {
                        //we can use the uri, to get the newly added image, but it will return path to full sized image
                        //e.g. content://media/external/images/media/7
                        //we can also update this path by replacing media by thumbnail to get the thumbnail
                        //because thumbnail path would be like content://media/external/images/thumbnail/7
                        //But the thumbnail is created after some delay by Android OS
                        //So you may not get the thumbnail. This is why I started new UI thread
                        //and it'll only run after the current thread completed.
                        if (path.equals(outputFileUri.getPath())) {
                            mScanner.disconnect();
                            //we need to create new UI thread because, we can't update our mail thread from here
                            //Both the thread will run one by one, see documentation of android  
                            Camera.this
                            .runOnUiThread(new Runnable() {
                                public void run() {

                                }
                            });
                        }
                    }
                });
        mScanner.connect();
4

3 に答える 3

4

サリー、写真を撮った後、ファイルがあるとわかっているディレクトリを見ても、ギャラリーやファイル マネージャーにその写真が表示されないということですか?

その場合は、次のようにメディア スキャナーを実行する必要があります。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));

... ここで、uri は写真の uri です。すでに知っているので、代わりにディレクトリの uri を使用することもできます (ただし、ディレクトリに多くのファイルまたはネストされたディレクトリが含まれている場合は遅くなる可能性があります)。 .

于 2012-04-22T10:59:42.797 に答える
1

以下のコードを使用して写真を撮る必要があります::

Calendar cal = Calendar.getInstance();
File file = new File(Environment.getExternalStorageDirectory(),(cal.getTimeInMillis()+".jpg"));
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
selectedImageUri = Uri.fromFile(file);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, selectedImageUri);
startActivityForResult(i, CAMERA_RESULT);

アクティビティの結果では、これらのコードを使用できます:::

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CAMERA_RESULT:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContext().getContentResolver(), selectedImageUri);
imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
}
于 2012-04-22T10:28:52.003 に答える
0

次の方法でアクティビティを更新できます。

Intent myIntent = getIntent();
finish();
startActivity(myIntent);
于 2012-04-22T10:29:42.503 に答える