私はIntents経由でカメラを使用する簡単なAndroidアプリを立ち上げようとしています。コードはAndroid documentation hereからかなりまっすぐですが、それは私のために働いていません。AndroidカメラインテントがRESULT_OKのケースで返されない
startActivityForResult()の呼び出し後にカメラのアプリケーションが正常に開きますが、写真を撮った後で元の状態に戻ります(?!)。具体的には、写真を撮って受け入れアイコン(ギャラクシーネクサスのチェックマーク)を選択した後は返されません。しかし、私はキャンセルアイコン(同じ電話機で「X」)を選択した後に戻ります。
は、ここでは、コードです(注、私は断片ではなく、Activityから働いている):
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_layout, container, false);
final Button btnCamera = (Button) view.findViewById(R.id.cameraid);
View.OnClickListener handler = new View.OnClickListener() {
public void onClick(View v) {
if (v == btnCamera) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// create a file to save the image
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "image_001.jpg");
Uri uriSavedImage = Uri.fromFile(image);
// start the image capture Intent
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
}
}
btnCamera.setOnClickListener(handler);
}
と
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
Toast.makeText(getActivity(), "Image saved to:\n" +
data.getData(), Toast.LENGTH_LONG).show();
}
else if (resultCode == Activity.RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
私はこの仕事をするために変更する必要がありますか?ありがとう。私が誤ってあなたのアプリが外部のカメラアプリに依存している場合は、これらの行は必要ありませんと思っていた
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
:私はマニフェストの行を追加したとき
ありがとう、ディラン、 - できます。 – gcl1