android攝像頭預覽
⑴ android 相機開發,如何實現在將攝像頭預覽
java術語,意為Java媒體框架(JMF)。該核心框架支持不同媒體(如:音頻輸出和視頻輸出)間的時鍾同步。它是一個標準的擴展框架,允許用戶製作純音頻流和視頻流。 JMF實際上是Java的一個類包。JMF 2.1.1技術提供了先進的媒體處理能力,從而擴展了Java平台的功能。這些功能包括:媒體捕獲、壓縮、流轉、回放,以及對各種主要媒體形式和編碼的支 持,如M-JPEG、H.263、MP3、RTP/RTSP (實時傳送協議和實時流轉協議)、Macromedias Flash、IBM的HotMedia和Beatniks的Rich Media Format (RMF)等。JMF 2.1.1還支持廣受歡迎的媒體類型,如Quicktime、Microsofts AVI和MPEG-1等。此外,JMF 2.1.1軟體中包括了一個開放的媒體架構,可使開發人員靈活採用各種媒體回放、捕獲組件,或採用他們自己的定製的內插組件。 JMF教程.rar大小:68.82M所需財富值:5 已經過網路安全檢測,放心下載 點擊下載下載量:12
⑵ Android 如何實現攝像頭不進行預覽顯示,只獲取視頻流數據
好像是強制要求有預覽的,安全問題,比如偷窺什麼的所以不允許無預覽畫面的使用攝像頭
⑶ android camera2 用surfaceview輸出預覽圖像畫面拉長
項目當中遇到調整攝像頭位置需要全屏顯示攝像頭預覽界面,過程中發現預覽界面存在無法顯示全,畫面被拉伸的問題。surfaceview的寬高比可能與camera設置的寬高比不一致 ,經測試發現設置Camera 預覽寬高可解決此問題(注意這里設置屏幕物理寬高不起作用,必須設置屏幕解析度)
////通過Resources獲取(無效)
// DisplayMetrics dm = getResources().getDisplayMetrics();
// heigth = dm.heightPixels;
// width = dm.widthPixels;
//獲取屏幕的默認解析度 設置預覽界面長寬解決預覽界面變形顯示不全問題(有效)
Display display = getWindowManager().getDefaultDisplay();
int height = display.getWidth();
int width = display.getHeight();
Camera.Size preSize = CameraUtil.getCloselyPreSize( true , width, height, parameters.getSupportedPreviewSizes());
parameters.setPreviewSize(preSize.width, preSize.height);
Log.e(TAG + "攝像頭尺寸前置" , "width" + preSize.width + "------" + "height" + preSize.height);
camera2.setParameters(parameters);
// 啟動攝像頭預覽
camera2.startPreview();
System.out.println( "camera.startpreview" );
⑷ android camera預覽關閉後還可以再次打開嗎
activity pause過後恢復我們以前是這樣做的,Camera對象需要重新生成
在onPause的時候,調用如下方法(已經刪除其他跟我們項目相關的邏輯代碼)
/**
* 停止顯示相機畫面</br>
* 若設置了錄制器,會自動關閉錄制器
*/
public void stopPreview() {
synchronized (mCameraLock) {
if (mCamera != null) {
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
}
然後在onResume時,重新獲得Camera對象(通過Camera.open()),
再重新設置previewCallback,SurfaceHolder,Parameters等,最後startPreview
這里可以提醒一下LZ,
打開攝像頭的時間可能會很長,勿在主線程直接打開,否則會有概率出ANR
攝像頭根據設備的不同可能在打開時經常會拋各種異常,記得try,catch
⑸ 為什麼android攝像頭預覽出來是亂的
打開攝像頭預覽(不包含拍照功能),你可以按照下面辦法試試。
整個預覽的流程是建立一個surface,獲取surface得控制器surfaceholder,設立surface的窗口previewdisplay,最後開始預覽startpreview。當然最後還要添加相機相關的許可權。
packagecom.example.trysurface;
importjava.io.IOException;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.Menu;
importandroid.view.Surface;
importandroid.view.SurfaceHolder;
importandroid.view.View;
importandroid.view.SurfaceHolder.Callback;
importandroid.view.SurfaceView;
importandroid.widget.Button;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.hardware.Camera;
{
SurfaceViewmSurface;
SurfaceHoldermSurfaceHolder;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSurface=(SurfaceView)findViewById(R.id.camera);
mSurfaceHolder=mSurface.getHolder(); //get the camera holder
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.addCallback(newCallback(){
@Override
publicvoidsurfaceChanged(SurfaceHolder arg0,intarg1,intarg2,
intarg3) {
//TODOAuto-generated method stub
}
@Override
publicvoidsurfaceCreated(SurfaceHolder arg0) {
//TODOAuto-generated method stub
mCamera=Camera.open(); //open camera
try{
mCamera.setPreviewDisplay(mSurfaceHolder); //set the preview
}catch(IOException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
mCamera.startPreview(); //state preview
}
@Override
publicvoidsurfaceDestroyed(SurfaceHolder arg0) {
//TODOAuto-generated method stub
}
}
);
}
}
布局
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView
android:id="@+id/camera"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
>
</SurfaceView>
</LinearLayout>
許可權
<uses-permissionandroid:name="android.permission.CAMERA"/>
<uses-featureandroid:name="android.hardware.camera"/>
<uses-featureandroid:name="android.hardware.camera.autofocus"/>
⑹ Android開發怎麼調用攝像頭功能
1、現在Android智能手機的像素都會提供照相的功能,大部分的手機的攝像頭的像素都在1000萬以上的像素,有的甚至會更高。它們大多都會支持光學變焦、曝光以及快門等等。下面的程序Demo實例示範了使用Camera v2來進行拍照,當用戶按下拍照鍵時,該應用會自動對焦,當對焦成功時拍下照片。layout/activity_main.xml界面布局代碼如下:
3、接來了的MainActivity.java程序將會使用CameraManager來打開CameraDevice,並通過CameraDevice創建CameraCaptureSession,然後即可通過CameraCaptureSession進行預覽或拍照了。
⑺ android 軟體開發 前後置攝像頭可以同時打開預覽嗎
//切換鏡頭
public void switchCamera(SurfaceView surfaceView, boolean isFrontCamera) {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
int cameraId = isFrontCamera ? CAMERA_FACING_FRONT : CAMERA_FACING_BACK;// CAMERA_FACING_FRONT為前置攝像頭
// 在2.3版本中應該這么寫
// int numCamera = Camera.getNumberOfCameras();
// CameraInfo info = new CameraInfo();
// for(int i = 0;i< numCamera;i++){
// Camera.getCameraInfo(i, info);
// if(info.facing == CameraInfo.CAMERA_FACING_BACK){
// cameraId = i;
// }
// }
mCamera = open(cameraId);
Parameters parameters = mCamera.getParameters();
Log.e("tag", "parameters.getPictureSize()"
+ parameters.getPictureSize().width);
setPictureSize(parameters);
parameters.setPictureFormat(PixelFormat.JPEG);
mCamera.setParameters(parameters);
Log.e("tag", "2 parameters.getPictureSize()"
+ parameters.getPictureSize().width);
setDisplayOrientation(mCamera);
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
⑻ android framework層如何調用攝像頭預覽畫面,想做一個自定義鎖屏頁面,進行人臉識別解鎖。
在設置中就有
⑼ android 開發 如何打開攝像頭並在屏幕上預覽,同時程序在後台對當前的屏幕內容進行截圖並上傳到指定服務
不知你用的什麼型號MOTO 在連上電腦時通知欄里會有一個USB 圖標點開會有選項,選擇攝像頭就可以使手機變為網路攝像頭了,然後可以在我的電腦里找到圖標可以直接在電腦上預覽
⑽ Android攝像頭非全屏預覽,怎麼保證圖像不變形
用surfaceview可以設置預覽窗口的大小和位置
然後用setpreviewsize設置攝像頭圖像的大小,大小和surfaceview一致就可以