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); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!