2017-10-28 7 views
1

イメージをキャプチャし、デフォルトのディレクトリにそのイメージをtest.jpgという名前で保存するコードを記述しようとしました。私のデバイスは、画像をキャプチャしませんが、それは、テストケースの他の部分を実行し、ボタンのみとアンドロイドがあるimage.Inのxmlファイルをキャプチャエラーを示しています。onClickのはデバイスから画像をキャプチャするこのコードがなぜ正しく動作しないのですか?

パブリッククラスMainActivityアクティビティ{

を拡張して処理するように設定されています
private File imagefile; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
public void process(View v) 
{ 
    Toast.makeText(this,"Inside the process",Toast.LENGTH_SHORT).show(); 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    imagefile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"test.jpg"); 
    Uri temp = Uri.fromFile(imagefile); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT,temp); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1); 
    startActivityForResult(intent,0); 


} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode==0) 
    { 
     switch (resultCode){ 
      case Activity.RESULT_OK: 
       if(imagefile.exists()) 
       { 
        Toast.makeText(this,"File was saved at "+imagefile.getAbsolutePath(),Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        Toast.makeText(this,"Error captureing image",Toast.LENGTH_SHORT).show(); 
       } 
       break; 
      case Activity.RESULT_CANCELED: 
       break; 
     } 
    } 
} 
} 
+0

キャストのonCreateに、ボタン()メソッド私は –

+0

@Yashajabiya、それでも同じ –

+0

追加 '<使用許可アンドロイドを:名前=「android.permission.CAMERA」/>'とカメラの許可の要求。 – KeLiuyue

答えて

0

1.Use checkSelfPermission

2.UseのrequestPermissions

3.Use onRequestPermissionsResult

  • 許可が付与されている場合、あなたはあなたのコード内でrequestPermissionsを行う必要があり、他のあなたが欲しいものを、行うことができます。

  • 許可を要求した場合、結果はonRequestPermissionsResultの方法で処理できます。許可が与えられていれば、あなたが望むことができます。

これを試してください。

public static final int MY_PERMISSIONS_REQUEST_CAMERA = 0; 

// process in your code 
public void process(View view) { 
    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.CAMERA) 
      != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.CAMERA}, 
       MY_PERMISSIONS_REQUEST_CAMERA); 
    } else { 
     // permission_granted 
     callMethod(); 
    } 
} 

/** 
* do something you want 
*/ 
public void callMethod() { 
    Toast.makeText(this, "Inside the process", Toast.LENGTH_SHORT).show(); 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    imagefile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "test.jpg"); 
    Uri temp = Uri.fromFile(imagefile); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, temp); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
    startActivityForResult(intent, 0); 
} 

/** 
* onRequestPermissionsResult 
* 
* @param requestCode 
* @param permissions 
* @param grantResults 
*/ 
@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    if (requestCode == MY_PERMISSIONS_REQUEST_CALL_PHONE) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      // Permission granted 
      callMethod(); 
     } else { 
      // Permission Denied 
      Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show(); 
     } 
     return; 
    } 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
} 
+0

おかげでそれが働いた –

+0

あなたに幸運。@ adnan_aust – KeLiuyue

関連する問題