Android 实现调用系统照相机拍照和录像的功能
本文实现android系统照相机的调用来拍照
项目的布局相当简单,只有一个Button:
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:onClick="click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="调用系统相机拍照"/> </RelativeLayout>
首先打开packages\apps\Camera文件夹下面的清单文件,找到下面的代码:
<activityandroid:name="com.android.camera.Camera" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:screenOrientation="landscape" android:clearTaskOnLaunch="true" android:taskAffinity="android.task.camera"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.DEFAULT"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <actionandroid:name="android.media.action.IMAGE_CAPTURE"/> <categoryandroid:name="android.intent.category.DEFAULT"/> </intent-filter> <intent-filter> <actionandroid:name="android.media.action.STILL_IMAGE_CAMERA"/> <categoryandroid:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
相关代码如下:
publicclassMainActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
publicvoidclick(Viewview){
/*
*<intent-filter><action
*android:name="android.media.action.IMAGE_CAPTURE"/><category
*android:name="android.intent.category.DEFAULT"/></intent-filter>
*/
//激活系统的照相机进行拍照
Intentintent=newIntent();
intent.setAction("android.media.action.IMAGE_CAPTURE");
intent.addCategory("android.intent.category.DEFAULT");
//保存照片到指定的路径
Filefile=newFile("/sdcard/image.jpg");
Uriuri=Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivity(intent);
}
}
实现激活录像功能的相关代码也很简单:
publicclassMainActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
publicvoidclick(Viewview){
/*
*<intent-filter><action
*android:name="android.media.action.VIDEO_CAPTURE"/><category
*android:name="android.intent.category.DEFAULT"/></intent-filter>
*/
//激活系统的照相机进行录像
Intentintent=newIntent();
intent.setAction("android.media.action.VIDEO_CAPTURE");
intent.addCategory("android.intent.category.DEFAULT");
//保存录像到指定的路径
Filefile=newFile("/sdcard/video.3pg");
Uriuri=Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(intent,0);
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
Toast.makeText(this,"调用照相机完毕",0).show();
super.onActivityResult(requestCode,resultCode,data);
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!