2

タイトルのとおり、カメラを起動して、ローカルで APP で使用できる写真を撮ろうとしています。これは Motorola Xoom 用で、デフォルトでは SD カードは付属していません。または、少なくとも私のクライアントが購入を検討しているものには SD カードがありません。

カメラを起動する方法に関する非常に優れたチュートリアルを見つけました。カメラを起動して、画像を物理的に保存し、その画像を再利用できるようにするまでのすべてを行うことができます。

私が見つけたソリューションやその他のチュートリアルの多くは、常駐メモリやアプリのローカルではなく、SD カードに保存する方法のみを示しています。そうすることは可能であるように見えますが、困惑しています。:-/

4

3 に答える 3

2

おそらく ContentProvider にロードして、後で画像を使用できるようにすることができます。

// Add some parameters to the image that will be stored in the Image ContentProvider
int UNIQUE_BUCKET_ID = 1337;
ContentValues values = new ContentValues(7);
values.put(MediaStore.Images.Media.DISPLAY_NAME,"name of the picture");
values.put(MediaStore.Images.Media.TITLE,"Thats the title of the image");
values.put(MediaStore.Images.Media.DESCRIPTION, "Some description");
values.put(MediaStore.Images.Media.BUCKET_DISPLAY_NAME,"Album name"); 
values.put(MediaStore.Images.Media.BUCKET_ID,UNIQUE_BUCKET_ID);
values.put(MediaStore.Images.Media.DATE_TAKEN,System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");

// Inserting the image meta data inside the content provider
Uri uri = getContentResolver().insert(MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);

// Filling the real data returned by the picture callback function into the content provider
try {
    OutputStream outStream = getContentResolver().openOutputStream(uri);
    outStream.write(buffer);  // buffer is the data stream returned by the picture callback
    outStream.close();
}catch (Exception e) {
    Log.e(TAG, "Exception while writing image", e);
}
于 2011-08-24T22:05:10.460 に答える
0

Activity.getFilesDir()Activity.getCacheDir()を確認してください。これらは、アプリが保存されているストレージへのアクセスを提供します。また、 Environment.getExternalStoragePublicDirectory()もチェックしてください。externalは、ここでは、アプリケーションのプライベートディレクトリの外部を意味します。他にもいくつかあるので、APIの同様の名前のメソッドを調べて、最適なものを見つけてください。

于 2011-08-24T21:44:49.613 に答える
0

Environment.getExternalStorageDirectory()したがって、 を呼び出すと、これは必ずしも外部メモリ スペース (つまり、SD カード) に対応するとは限らず、SD カード スロットのないデバイスではローカル メモリ スペースが返されることに注意してください。

注: ここで「外部」という言葉を混同しないでください。このディレクトリは、メディア/共有ストレージと考えるとよいでしょう。これは、比較的大量のデータを保持できるファイル システムであり、すべてのアプリケーションで共有されます (権限を強制しません)。従来、これは SD カードですが、保護された内部ストレージとは別のデバイスに内蔵ストレージとして実装され、コンピュータにファイルシステムとしてマウントできる場合もあります。

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory ()

同じことが当てはまりますEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

于 2011-08-24T23:40:18.777 に答える