日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android多媒体开发:照相机

發布時間:2025/4/16 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android多媒体开发:照相机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、調用系統照相機和攝像機功能

調用系統攝像頭進行拍照和攝像是通過隱式啟動系統Activity 實現的,無需給自己的工程添加權限,直接調用即可。因此我們只需知道系統照相機和攝像機Activity 的action 和category 就可以了

步驟

1、打開Android 源碼,查看”\packages\apps\”文件文件目錄下的Camera 應用,即系統攝像頭的應用程序。打開其清單文件文件,查看其Activity 的action 和category 信息

2、Camera 類的action 和category 如下

照相機的意圖過濾器

<intent-filter><action android:name="android.media.action.IMAGE_CAPTURE" /><category android:name="android.intent.category.DEFAULT" /> </intent-filter>

攝像機的意圖過濾器

<intent-filter><action android:name="android.media.action.VIDEO_CAMERA" /><category android:name="android.intent.category.DEFAULT" /> </intent-filter>

3、采用隱式調用的方式調用Activity

由于希望在調用拍照或攝像功能后將結果返回到當前應用的Activity,所以在開啟Activity 時不能使用startActivity 方法,而是使用startActivityForResult 方法開啟Activity,并重寫onActivityResult 方法處理回傳的數據

布局文件比較簡單,界面只有兩個按鈕,一個用于打開照相機,一個用于打開攝像機。這里只給出核心代碼清單

拍照功能核心代碼

public void take(View view){//創建一個Intent 對象Intent intent = new Intent();//設置Actionintent.setAction("android.media.action.IMAGE_CAPTURE");//創建一個文件File file = newFile(Environment.getExternalStorageDirectory().getAbsolutePath(),"my.jpg");//創建uri 對象Uri uri = Uri.fromFile(file);//設置圖片的輸出路徑intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//開啟ActivitystartActivityForResult(intent, 100);}

攝像功能核心代碼

public void video(View view){Intent intent = new Intent();intent.setAction("android.media.action.VIDEO_CAPTURE");File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),"myVedio.mp4");Uri uri = Uri.fromFile(file);intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);startActivityForResult(intent, 101); }

二、編碼實現照相功能

使用Camera+SurfaceView 控件可實現自定義照相機功能。接下來我將具體的步驟展示出來

1、編寫布局文件,該布局只有一個SurfaceView 控件和一個Button 作為拍照按鈕

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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"android:orientation="vertical"><SurfaceView android:id="@+id/sv"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/><Button android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="takeImage"android:text="拍照"/></LinearLayout>

2、在清單文件中添加2 個權限信息

添加第一個權限是因為我們代碼使用到系統照相機,第二個是因為我們需要把照好的相片保存到sdcard 上

<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //聲明成員變量private Camera camera;//照相機對象private SurfaceHolder holder;//SurfaceView 的輔助類//獲取SurfaceView 控件的實例,通過其輔助類SurfaceHolder 對象添加CallBack 接口的實現//獲取預覽畫面的SurfaceView 控件SurfaceView surfaceView = (SurfaceView) findViewById(R.id.sv);//得到預覽畫面的輔助類holder = surfaceView.getHolder();//添加回調方法holder.addCallback(new Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {try {//打開攝像頭camera = Camera.open();//設置預覽顯示的位置camera.setPreviewDisplay(holder);//開啟預覽camera.startPreview();} catch (IOException e) {e.printStackTrace();}}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {//停止預覽界面camera.stopPreview();//釋放攝像頭camera.release();}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format,int width, int height) {}//添加點擊拍照按鈕的點擊事件:設置攝像頭自動對焦,對焦完成后保存圖片并重新預覽//拍照public void takeImage(View view) {if (camera == null) {Toast.makeText(this, "照相機還沒打開。", Toast.LENGTH_SHORT).show();return;}//點擊拍照按鈕,攝像頭自動對焦,對焦完成后拍照并保存camera.autoFocus(new AutoFocusCallback() {@Overridepublic void onAutoFocus(boolean success, Camera camera) {//對焦完成,拍照并保存camera.takePicture(null, null, new PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {//設置照片保存路徑String path =Environment.getExternalStorageDirectory().getAbsolutePath() + "/" +UUID.randomUUID().toString() + ".jpg";try {FileOutputStream outputStream = new FileOutputStream(path);//將照片字節數組寫到文件中outputStream.write(data);outputStream.close();//重新開啟預覽camera.startPreview();} catch (Exception e) {e.printStackTrace();}}});}});}

三、總結

Camera

方法說明
open()打開攝像頭
release()釋放攝像頭
setPreviewDisplay()設置預覽顯示的位置
startPreview()開啟預覽
stopPreview()停止預覽界面
autoFocus()AutoFocusCallback
takePicture()對焦完成

總結

以上是生活随笔為你收集整理的Android多媒体开发:照相机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜福利在线播放 | 一区二区三区在线电影 | 亚洲精品乱码久久久久久麻豆不卡 | 天天操天天干天天爱 | 日韩成人精品视频 | 男人舔女人下部高潮全视频 | 国产主播喷水 | 国产免费无遮挡吸奶头视频 | 欧美黑人巨大xxx极品 | 日韩激情影院 | 日本www高清 | 韩日一级片 | 日韩av网站在线 | 久久国产电影 | 亚洲图片在线观看 | 日操干| 九一国产在线 | 精品人妻一区二区三区换脸明星 | 欧美日韩亚洲另类 | 欧美午夜久久 | 国产伦一区二区 | 国内自拍第三页 | 91新视频 | 男人操女人的免费视频 | 人人人爽 | 中文av网站 | 国产91综合 | 免费av网站在线观看 | 神马久久久久久久久 | av首页在线 | 夜夜骚网站 | 色臀 | 羞羞涩 | 手机在线视频一区 | 99久久久国产 | 国产第一页在线观看 | 波多野结衣av片 | 黄色一级a毛片 | 国产一级大片 | www一区二区| 午夜国产一区二区三区 | 精品国产一区二区三区久久久久久 | 青娱乐自拍视频 | 91天堂在线视频 | 欧美精品黄色片 | а√天堂8资源中文在线 | 久草视频中文在线 | 欧美日本韩国 | 日韩在线观看你懂的 | 无码专区久久综合久中文字幕 | 亚洲骚片 | 亚洲九九爱 | 亚洲精品国产一区二 | 日本亚洲天堂 | 校园春色中文字幕 | 天堂网在线观看视频 | 欧美精品入口蜜桃 | 日韩图片一区 | 538国产精品一区二区免费视频 | 图片区 小说区 区 亚洲五月 | 亚洲一区二区伦理 | 99热99re6国产在线播放 | 91美女诱惑 | 亚洲精品一品 | 国产一二三在线视频 | 强行侵犯视频在线观看 | 天堂va蜜桃一区二区三区漫画版 | 黑人巨大猛交丰满少妇 | 麻豆精品av | 黄色三级在线观看 | 亚洲伦理天堂 | 91视频高清 | 尤物视频在线观看国产性感 | 肥臀av| 久久国语精品 | 日韩三级网 | 二区久久 | 少妇性生活视频 | 欧美极品videos精品 | 国产一区二区三区精品在线 | 欧美zozo| 久久性片| 老司机午夜福利视频 | 波多野结衣家庭主妇 | 免费黄色av | 日韩婷婷 | 雪白的扔子视频大全在线观看 | 中文免费av | 亚洲资源av | 全部孕妇毛片丰满孕妇孕交 | av午夜精品 | 国产一级免费av | 色一情一伦一子一伦一区 | 鲁丝一区二区 | 国产视频精选 | 黄网站在线免费看 | 伊人亚洲精品 | 91一区二区在线 | 国产手机在线视频 |