1

私はカメラプロジェクトを持っており、camera2 API特にこのリンクから 使用しています https://github.com/googlesamples/android-Camera2Basic

たとえば、撮影した写真をファイルマネージャーに保存できますDCIM/cameraが、ギャラリーを開くと、最後の写真が表示されません。

誰でも私を助けることができますか?

もう 1 つの質問ですが、カメラをリストにできるようにしたいです。たとえば、「LINE」を開いてカメラで写真を撮りたい場合、カメラが表示されて選択できるようにしたいです。

これは、画像をカスタム パスに保存するために試したサンプル コードです。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mFile = new File("/storage/emulated/0/DCIM/Camera", "pic.jpg");
    int counter=1;
    while (mFile.exists()) {
        mFile = new File("/storage/emulated/0/DCIM/Camera", "pic" + String.format("%02d", counter) + ".jpg");
        counter++;
    }

}
4

3 に答える 3

1

Android メディア ギャラリーは、書き込み時にファイルをすぐに検出しない場合がありますが、後でスキャンするときにのみ検出されます。強制的にスキャンを実行するには、このコードを使用できます

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Intent mediaScanIntent = new Intent(
                Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    mediaScanIntent.setData(Uri.fromFile(mFile));
    mContext.sendBroadcast(mediaScanIntent);
} else {
    mContext.sendBroadcast(new Intent(
    Intent.ACTION_MEDIA_MOUNTED,
    Uri.parse("file://" + Environment.getExternalStorageDirectory())));
    }
}

追加されたすべてのファイルに対してスキャンを実行するのはコストのかかる操作であるため、このソリューションを使用して手動で追加できます

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, mFile);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); 
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
于 2016-03-17T08:55:19.843 に答える
0

ギャラリーに単一のファイルを追加する場合は、これを使用してみてください。

MediaScannerConnection.scanFile(context,
            new String[]{file.toString()}, null,
            new MediaScannerConnection.OnScanCompletedListener()
            {
                public void onScanCompleted(String path, Uri uri)
                {
                    Log.d("onScanCompleted", "Scanned " + path + " and uri " + uri);
                }
            });
于 2016-03-17T08:56:12.877 に答える