簡単な例を検索して写真を撮り、URIを使用して保存し、画像処理のために写真を取得しました。多くのサンプルコードを試しましたが、どれもスムーズに進みませんでした。
サンプルコードを持っている人はいますか?
このような変数を定義します
protected static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 0;
Androidからカメラを呼び出すためのコードを使用します。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"fname_" +
String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(Android.provider.MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
これを呼び出すクラスで、onActivityResult関数をオーバーライドし、以下のコードを入力します。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
//use imageUri here to access the image
Bundle extras = data.getExtras();
Log.e("URI",imageUri.toString());
Bitmap bmp = (Bitmap) extras.get("data");
// here you will get the image as bitmap
}
else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT);
}
}
}
私も同じ問題を抱えていました。
インターネットからいくつかのコードをテストしていましたが、見つかりませんでした。次に、developer.Androidからいくつかの基本的なコードを学びました。その後、2つの異なるコードを混合し、1つが機能しました。どうぞ!
public class MainActivity extends AppCompatActivity {
static final int PICTURE_RESULT = 1;
String mCurrentPhotoPath;
ContentValues values;
private Uri file;
ImageView imageView;
Bitmap help1;
ThumbnailUtils thumbnail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
values = new ContentValues();
}
public void launch_camera(View v) {
// the intent is my camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//getting uri of the file
file = Uri.fromFile(getFile());
//Setting the file Uri to my photo
intent.putExtra(MediaStore.EXTRA_OUTPUT,file);
if(intent.resolveActivity(getPackageManager())!=null)
{
startActivityForResult(intent, PICTURE_RESULT);
}
}
//this method will create and return the path to the image file
private File getFile() {
File folder = Environment.getExternalStoragePublicDirectory("/From_camera/imagens");// the file path
//if it doesn't exist the folder will be created
if(!folder.exists())
{folder.mkdir();}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_"+ timeStamp + "_";
File image_file = null;
try {
image_file = File.createTempFile(imageFileName,".jpg",folder);
} catch (IOException e) {
e.printStackTrace();
}
mCurrentPhotoPath = image_file.getAbsolutePath();
return image_file;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PICTURE_RESULT) {
if(resultCode == Activity.RESULT_OK) {
try {
help1 = MediaStore.Images.Media.getBitmap(getContentResolver(),file);
imageView.setImageBitmap( thumbnail.extractThumbnail(help1,help1.getWidth(),help1.getHeight()));
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}
xMLファイルにはButtonとImageViewがあり、Androidマニフェストでアクセス許可を宣言することを忘れないでください:
<uses-feature Android:name="Android.hardware.camera" Android:required="true" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
詳細については、提案: https://developer.Android.com/training/camera/photobasics.html#TaskPhotoViewhttps://www.youtube.com/watch?v= je9bdkdNQqg