0. Intent意图对象分类
1.显示意图:
2.隐式意图:
一.使用隐式意图调用拍照/图库/摄像机
1.使用隐式意图调用系统拍照界面
2.使用隐式意图调用系统录视频界面
3.使用隐式意图打开图库
二 .在onActivityResult处理结果
三。 所有代码
)
0. Intent意图对象分类
1.显示意图:
一般情况下是用于,APP应用自身:组件(Activity,Service,…) 与 组件(Activity,Service,…) 的激活调用
2.隐式意图:
隐式意图一般情况下用于,两个应用程序的:组件(Activity,Service,…) 与 组件(Activity,Service,…) 的激活调用
实现代码
package com.example.day07_camera;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.VideoView;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button bt_pick;
Button bt_vido;
Button bt_camer;
ImageView img;
VideoView vido;
String path;
public static final int Pick_Code = 101;//相册请求吗
public static final int Vido_Code = 102;//摄像机请求吗
public static final int Camer_Code = 103;//照相机请求吗
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_pick = findViewById(R.id.bt_pick);
bt_vido = findViewById(R.id.bt_vido);
bt_camer = findViewById(R.id.bt_camer);
img = findViewById(R.id.img);
vido = findViewById(R.id.vido);
bt_pick.setOnClickListener(this);
bt_vido.setOnClickListener(this);
bt_camer.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bt_pick:
openPick();
break;
case R.id.bt_vido:
openVido();
break;
case R.id.bt_camer:
openCamer();
break;
}
}
//打开照相机
private void openCamer() {
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
//TODO 1:使用内容提供者向图库插入一条记录
//生成图片的名字
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
String name="IMG_"+year+(month+1)+day+"_"+hour+minute+second+".jpg";
path="/sdcard/DCIM/Camera/"+name;
//使用内容提供者添加道SD卡中
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.DATA,path);
ContentResolver contentResolver = getContentResolver();
Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
//TODO 2:将照片保存到SD卡中
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(intent,Camer_Code);
}
//打开摄相机
private void openVido() {
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent,Vido_Code);
}
//打开图库方法
private void openPick() {
//创建隐式意图跳转
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
//添加guolv
intent.setType("image/*");//打开所有的照片
// intent.setType("video/*");//打开所有的视频
startActivityForResult(intent,Pick_Code);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Pick_Code){
if (resultCode == Activity.RESULT_OK){
Uri uri = data.getData();
img.setImageURI(uri);
}else {
Toast.makeText(this, "返回数据失败", Toast.LENGTH_SHORT).show();
}
}else if (requestCode == Vido_Code){
if (resultCode == Activity.RESULT_OK){
Uri uri = data.getData();
vido.setVideoURI(uri);
vido.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
vido.start();
}
});
}else {
Toast.makeText(this, "返回数据失败", Toast.LENGTH_SHORT).show();
}
}else if (requestCode == Camer_Code){
if (resultCode == Activity.RESULT_OK){
Bitmap bitmap = BitmapFactory.decodeFile(path);
img.setImageBitmap(bitmap);
}else {
Toast.makeText(this, "返回数据失败", Toast.LENGTH_SHORT).show();
}
}
}
}
添加权限(打开照相机)
<uses-permission android:name="android.permission.CAMERA"></uses-permission>