public
class
CameraTestActivity
extends
AppCompatActivity {
public
static
final
int
TAKE_PHOTO =
1
;
private
ImageView picture;
private
Uri imageUri;
@Override
protected
void
onCreate(
@Nullable
Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera_test);
Button takePhoto = (Button)findViewById(R.id.take_photo);
picture = (ImageView)findViewById(R.id.picture);
takePhoto.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
File outputImage =
new
File(getExternalCacheDir(),
"output_image.jpg"
);
try
{
if
(outputImage.exists()){
outputImage.delete();
}
outputImage.createNewFile();
}
catch
(IOException e){
e.printStackTrace();
}
if
(Build.VERSION.SDK_INT >=
24
){
//android7.0及以上
imageUri = FileProvider.getUriForFile(CameraTestActivity.
this
,
"com.example.cameratest.fileprovider"
, outputImage);
}
else
{
imageUri = Uri.fromFile(outputImage);
}
//启动相机程序
Intent intent =
new
Intent(
"android.media.action.IMAGE_CAPTURE"
);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, TAKE_PHOTO);
}
});
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
switch
(requestCode){
case
TAKE_PHOTO:
if
(resultCode == RESULT_OK){
try
{
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
picture.setImageBitmap(bitmap);
}
catch
(FileNotFoundException e) {
e.printStackTrace();
}
}
break
;
default
:
break
;
}
}
}