web-dev-qa-db-ja.com

写真を撮って保存し、Android

簡単な例を検索して写真を撮り、URIを使用して保存し、画像処理のために写真を取得しました。多くのサンプルコードを試しましたが、どれもスムーズに進みませんでした。

サンプルコードを持っている人はいますか?

7
user1802057

このような変数を定義します

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);
           } 
         }


    }
12
Pramod J George

画像をキャプチャして保存し、開く例がいくつかあります...

1。Android Camera API-チュートリアル

2。Android開発者

。Githubのカメラの例

4。別の例

6
SilentKiller

私も同じ問題を抱えていました。

インターネットからいくつかのコードをテストしていましたが、見つかりませんでした。次に、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

3
matmany