Androidはシステムカメラを呼び出して写真を保存し、現在のインタフェースに表示します.
主なアイデアはカメラを使って写真を撮って、それから撮った写真のためにSDカードで新しい写真を保存するファイルを開きます
コード:カメラとSDカードを呼び出すため、次の権限を追加する必要があります.
コード:カメラとSDカードを呼び出すため、次の権限を追加する必要があります.
manifests
android:name="android.permission.CAMERA"/> android:name="android.permission.INTERNET" /> android:name="android.permission.ACCESS_NETWORK_STATE" /> android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
activity_main.xmlでxml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
MainActivity:package com.example.administrator.myapplication1; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import java.io.IOException; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.app.Activity; import android.content.ContentResolver; import android.content.Intent; import android.graphics.Bitmap; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.os.Environment; import java.io.FileOutputStream; import java.io.File; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.os.Environment; public class MainActivity extends AppCompatActivity { private Button mButton; private ImageView mImageView;// private File mPhotoFile; private String mPhotoPath; public final static int CAMERA_RESULT = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button) findViewById(R.id.button); mButton.setOnClickListener(new ButtonOnClickListener()); mImageView = (ImageView) findViewById(R.id.imageView); } private class ButtonOnClickListener implements View.OnClickListener { public void onClick(View v) { try { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");// mPhotoPath = getSDPath()+"/"+ getPhotoFileName();// ,getSDPath() getPhotoFileName() mPhotoFile = new File(mPhotoPath); if (!mPhotoFile.exists()) { mPhotoFile.createNewFile();// } intent.putExtra(MediaStore.EXTRA_OUTPUT,//Intent Uri.fromFile(mPhotoFile)); startActivityForResult(intent, CAMERA_RESULT);// } catch (Exception e) { } } } public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); // sd if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory();// } return sdDir.toString(); } private String getPhotoFileName() { Date date = new Date(System.currentTimeMillis()); SimpleDateFormat dateFormat = new SimpleDateFormat( "'IMG'_yyyyMMdd_HHmmss"); return dateFormat.format(date) +".jpg"; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_RESULT) { Bitmap bitmap = BitmapFactory.decodeFile(mPhotoPath, null); mImageView.setImageBitmap(bitmap); } } }
以下、SDカードの取得経路を補足します.2つ目のケースがあります.
2つ目で1つのバッグを追加する必要がありますimport android.os.Environment;
sdカードのパスを取得する方法1:private String folder="/sdcard/DIAM/Camera/"(SDカード上の写真プログラムの画像格納パス);//道筋を徹底的に書き,使用に賛成しない
方法2:public String getSDPath(){File sdDir=null;boolean sdCardExist=Environment.getExternalStorageState().equals(Android.os.Environment.MEDIA_MOUNTED);//sdカードにif(sdCardExist)があるかどうかを判断する{sdDir=Environment.getExternalStorageDirectory();//取得とディレクトリ}return sdDir.toString(); }
次に、後ろにスラッシュ、ファイル名String file Name=getSDPath()+"/"+name;//ディレクトリにnameで存在