拍照
public class MainActivity extends AppCompatActivity {
private ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView);
}
public void myClick(View view) {
dispatchTakePictureIntent();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
static final int REQUEST_IMAGE_CAPTURE = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
}
}
}
拍照并保存照片
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final int REQUEST_IMAGE = 100;
Button captureButton;
ImageView imageView;
File destination;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
captureButton = (Button) findViewById(R.id.button4);
imageView = (ImageView) findViewById(R.id.imageView);
captureButton.setOnClickListener(this);
destination = new File(Environment
.getExternalStorageDirectory(), "image.jpg");
}
@Override
public void onClick(View v) {
try {
Intent intent =
new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(destination));
startActivityForResult(intent, REQUEST_IMAGE);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "出错啦", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE
&& resultCode == Activity.RESULT_OK) {
try {
FileInputStream in =
new FileInputStream(destination);
BitmapFactory.Options options =
new BitmapFactory.Options();
options.inSampleSize = 10;
Bitmap userImage = BitmapFactory
.decodeStream(in, null, options);
imageView.setImageBitmap(userImage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
录像
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_VIDEO = 100;
Button captureButton;
TextView text;
File destination;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
captureButton = (Button) findViewById(R.id.capture);
captureButton.setOnClickListener(listener);
text = (TextView) findViewById(R.id.file);
destination = new File(Environment
.getExternalStorageDirectory(), "myVideo.mp4");
}
@Override
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
if (requestCode == REQUEST_VIDEO
&& resultCode == Activity.RESULT_OK) {
String location = data.getData().toString();
text.setText(location);
}
}
private View.OnClickListener listener =
new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Intent intent =
new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(destination));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 100);
startActivityForResult(intent, REQUEST_VIDEO);
} catch (ActivityNotFoundException e) {
Toast.makeText(MainActivity.this, "出错啦", Toast.LENGTH_SHORT).show();
}
}
};
}
Camera1 with SurfaceView拍照
import android.hardware.Camera;
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.ShutterCallback, Camera.PictureCallback {
private SurfaceView mPreview;
Camera mCamera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPreview = (SurfaceView) findViewById(R.id.preview);
mPreview.getHolder().addCallback(this);
mPreview.getHolder()
.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera = Camera.open();
}
/**
* 拍照按钮点击事件
*/
public void snapBtnClick(View v) {
mCamera.takePicture(this, null, null, this);
}
@Override
protected void onPause() {
super.onPause();
mCamera.stopPreview();
}
@Override
protected void onDestroy() {
super.onDestroy();
mCamera.release();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters params = mCamera.getParameters();
/**
* 获取支持的屏幕分辨率集合
* 顺序为大到小
*/
List<Camera.Size> sizes =
params.getSupportedPreviewSizes();
Camera.Size selected = sizes.get(0);
params.setPreviewSize(selected.width, selected.height);
List<Camera.Size> picSizes = params.getSupportedPictureSizes();
/**
* 设置保存图片分辨率
*/
mCamera.setParameters(params);
/**
* 旋转摄像头 不然是歪的
*/
mCamera.setDisplayOrientation(90);
mCamera.startPreview();
}
/**
* 点击拍照后的事件处理
*
* @param data
* @param camera
*/
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
File directory = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
FileOutputStream out =
new FileOutputStream(new File(directory, "picture.jpg"));
out.write(data);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
camera.startPreview();
}
/**
* 拍照成功后回调
*/
@Override
public void onShutter() {
Toast.makeText(this, "拍照成功", Toast.LENGTH_SHORT).show();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
录音
public class MainActivity extends AppCompatActivity {
private MediaRecorder recorder;
private Button start, stop;
File path;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.startButton);
start.setOnClickListener(startListener);
stop = (Button) findViewById(R.id.stopButton);
stop.setOnClickListener(stopListener);
recorder = new MediaRecorder();
path = new File(Environment.getExternalStorageDirectory(),
"我的录音.3gp");
resetRecorder();
}
@Override
public void onDestroy() {
super.onDestroy();
recorder.release();
}
private void resetRecorder() {
/**
* 设置声音来源 麦克风
*/
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(
MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(
MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(path.getAbsolutePath());
try {
recorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
private View.OnClickListener startListener =
new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
recorder.start();
start.setEnabled(false);
stop.setEnabled(true);
} catch (Exception e) {
e.printStackTrace();
}
}
};
private View.OnClickListener stopListener =
new View.OnClickListener() {
@Override
public void onClick(View v) {
recorder.stop();
resetRecorder();
start.setEnabled(true);
stop.setEnabled(false);
}
};
}