當前位置:首頁 » 安卓系統 » android切換攝像頭

android切換攝像頭

發布時間: 2022-11-03 22:27:06

Ⅰ Eclipse Android虛擬機怎麼調取攝像頭

eclipse Android虛擬機是無法調取電腦的的攝像頭的,因為android系統和windows系統本身是不兼容的,後台沒有硬體和軟體的支持。
android開發中都會遇到相機的開發需求,這時候使用真機進行調試是更好的解決方法。

Ⅱ android 中實現網頁調用攝像頭功能怎麼實現

android 中實現網頁調用攝像頭功能方法·如下: 1/apk/res/android" xmlns:tools="schemas/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".CameraWebviewActivity" > <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Camera" android:layout_alignParentTop="true" /> <WebView android:id="@+id/wv" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_below="@+id/bt" /> </RelativeLayout> 4.、編寫activity: public class CameraWebviewActivity extends Activity { private final static String TAG = "CameraWebviewActivity"; private Button bt; private WebView wv; public String fileFullName;//照相後的照片的全整路徑 private boolean fromTakePhoto; //是否是從攝像界面返回的webview @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_webview); initViews(); } private void initViews() { bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("----------------"); takePhoto( Math.random()*1000+1 + ".jpg"); } }); wv = (WebView) findViewById(R.id.wv); WebSettings setting = wv.getSettings(); setting.setjavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }); wv.setWebChromeClient(new WebChromeClient(){ @Override//實現js中的alert彈窗在Activity中顯示 public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Log.d(TAG, message); result.confirm(); return true; } }); wv.loadUrl("file:///android_asset/index.html"); final Handler mHandler = new Handler(); //webview增加javascript介面,監聽html頁面中的js點擊事件 wv.addJavascriptInterface(new Object(){ public String clickOnAndroid() {//將被js調用 mHandler.post(new Runnable() { public void run() { fromTakePhoto = true; //調用 啟用攝像頭的自定義方法 takePhoto("testimg" + Math.random()*1000+1 + ".jpg"); System.out.println("========fileFullName: " + fileFullName); } }); return fileFullName; } }, "demo"); } /* * 調用攝像頭的方法 */ public void takePhoto(String filename) { System.out.println("----start to take photo2 ----"); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, "TakePhoto"); //判斷是否有SD卡 String sdDir = null; boolean isSDcardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); if(isSDcardExist) { sdDir = Environment.getExternalStorageDirectory().getAbsolutePath(); } else { sdDir = Environment.getRootDirectory().getAbsolutePath(); } //確定相片保存路徑 String targetDir = sdDir + "/" + "webview_camera"; File file = new File(targetDir); if (!file.exists()) { file.mkdirs(); } fileFullName = targetDir + "/" + filename; System.out.println("----taking photo fileFullName: " + fileFullName); //初始化並調用攝像頭 intent.putExtra(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileFullName))); startActivityForResult(intent, 1); } /* * (non-Javadoc) * @see android.app.Activity#onActivityResult(int, int, android.content.Intent) * 重寫些方法,判斷是否從攝像Activity返回的webview activity */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { System.out.println("----requestCode: " + requestCode + "; resultCode " + resultCode + "; fileFullName: " + fileFullName); if (fromTakePhoto && requestCode ==1 && resultCode ==-1) { wv.loadUrl("javascript:wave2('" + fileFullName + "')"); } else { wv.loadUrl("javascript:wave2('Please take your photo')"); } fromTakePhoto = false; super.onActivityResult(requestCode, resultCode, data); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.camera_webview, menu); return true; } }

Ⅲ 有什麼手機軟體可以使android系統的手機通過usb連接把手機變成電腦的攝像頭

一、DroidCamX
Wireless
Webcam
Pro
是一款非常實用的工具,它最大的功能就是能讓你的Android手機攝像頭充當電腦的攝像頭。
這款軟體支持你通過WiFi、藍牙或者是USB數據線來充當電腦的攝像頭,你還可以使用一個IP監控攝像頭軟體來讓你通過網頁瀏覽器來使用攝像頭。
主要特點:
-
在聊天軟體中使用該軟體,比如Skype/雅虎/MSN
等等;
-
支持各種視頻格式和解析度;
-
支持音頻;
-
支持攝像頭LED閃光燈;
注意:這款軟體只適用於Windwos和Linux系統。
下載地址:http://app.sohu.com/down_detail/0/2110_index.html
二、EpocCam
可以讓你的手機當做高清晰度的電腦攝像頭。兼容Skype,MSN
Live
Messenger,QQ等聊天程序。
下載地址:http://app.sohu.com/down_detail/0/28245_index.html
上述兩款軟體,都分別有電腦端安裝程序與手機端安裝程序,須將兩者同時下載,分別安裝在電腦端與手機端後,並按說明配置IP地址等才能使用。
如果還有疑問,歡迎追問!

Ⅳ android打開usb攝像頭

安卓平板,可以使用OTG線,連接攝像頭,但是必須是免驅動的,也就是不需要安裝驅動程序的攝像頭才可以。
如果是需要安裝驅動的,可能兼容性不好,連接無法識別或連接不穩定。
還有就是選擇質量好的OTG線,連接正對穩定。

Ⅳ android 用surfaceview顯示camera,Activity1和Activity2相互切換,代碼相同,都是獲取攝像頭顯示和按鈕切換

在你的 actitviy1 切到 activity2 的時候 onstop 中 釋放下surfaceview的渲染試試

Ⅵ Android 如何切換前後攝像頭

三星手機切換前後攝像頭的方法:請您打開手機照相機,找到一個左右箭頭的小相機圖標,點擊該圖標切換前後攝像頭。

Ⅶ 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系統的手機通過usb連接把手機變成電腦的攝像頭

  • 使用DroidCamX軟體

  • DroidCamX是一款功能非常強大的手機攝像頭變身電腦攝像頭軟體,支持多種連接方式,支持USB數據線連接、Wifi無線連接以及藍牙連接三種模式,使用非常方便,使用方法如下:

    1. 下載解壓DroidCamX頭軟體後,會得到如下三個文件:

    2. 首先在手機中安裝HA-20110427-DroidCamX.Wireless.Webcam.Pro.1.4.2._GCA.apk。手機中安裝應用,這里就不介紹了,可以直接下載到手機中安裝,也可以將手機連接電腦,通過豌豆莢等工具安裝手機

    3. 電腦上安裝Droid Cam-3.2.exe安裝提示一步步操作即可,默認安裝目錄為C:Program Files DroidCam(32位系統)或C:Program Files (x86)DroidCam(64位系統),為了使用更方便,大家可以將「電腦端DroidCamApp.exe漢化覆蓋.zip」中的DroidCamApp.exe覆蓋掉安裝目錄下的同名文件,軟體界面即變成中文

    4. 安裝好電腦端之後,還可以為DroidCamApp.exe建立一個桌面快捷方式,方便後期直接打開

    5. 手機初次連接電腦,需要安裝手機驅動,建議使用豌豆莢、電腦管家等軟體自動檢測安裝,安裝完成驅動。為了方便以後使用,可以先建立一個bat文件,內容為adb forward tcp:4747 tcp:4747,建立一個bat文件設置埠用

    6. 完成以上步驟,然後電腦上運行這個bat文件一次,然後再運行DroidCam客戶端,選擇連接方式為「ADB(由USB)」,之後點擊Conect。如果不運行bat或者設置的埠與bat內的不一致,會有錯誤提示

    7. 電腦與手機攝像頭連接成功後,攝像頭界面就出來了

  • 手機變PC電腦無線攝像頭軟體

  • 這是一款瞬間將安卓智能手機變電腦攝像頭的軟體,可以通過手機應用及電腦客戶端程序讓你在電腦上使用手機攝像頭,支持Wi-Fi及USB兩種連接方式。讓手機當做電腦攝像頭,使用方法:

    1. 安裝電腦端

    2. 用手機助手如豌豆莢,91助手,360手機助手連上您的手機安裝安卓手機

    3. 安裝完上述步驟先打開電腦端,然後再打開手機端,就可以自由實現有線或無線攝像頭功能


Ⅸ 手機里的相機只能照前面,不能照後面咋回事

1、Android系統要求同時只能有一個應用打開攝像頭,當另外一個應用打開攝像頭,相機攝像頭將無法打開。部分應用由於自身設計原因可能存在未及時釋放攝像頭。如手電筒、二維碼掃描等程序,可以將相機相關的應用先關閉,再進入相機嘗試;

2、 相機設備屬於敏感的功能設備,是否之前禁用過該應用的使用許可權。調用攝像頭中查看是否禁用了應用對攝像頭的訪問許可權。請根據實際情況,允許調用攝像頭。

3、手機拍照出現了無法退出物體識別功能的故障,導致相機無法繼續處理拍照、退出的動作,表現為打開黑屏、退出卡死,或者表現人臉識別無法使用現象。

4、若無法解決,請按照下面建議進行操作。

使用建議:

(1)清除相機數據:

(2)請重啟手機後再次嘗試。

(3)請備份重要數據後將手機恢復出廠設置或升級最新系統版本後重試。

(4)果以上操作仍無法解決問題,請攜帶購機發票前往服務網點檢修。

(9)android切換攝像頭擴展閱讀:

手機攝像機常見故障檢修:

故障現象:手機拍照前攝像頭出現白屏

一、故障原因:

1、手機照相白屏一般情況和手機攝像頭有關,如果手機是摔過的,可能是攝像頭松動導致連接不良或者摔壞。還有的時候LCD松動也會影響照相功能,因為LCD和照相電路是有關系的。

2、如果手機沒百有摔過,自然成照相白屏。可能是攝像頭功能壞或者是攝像頭的驅動軟體丟失導致。

3、也可能是攝像頭到UPP通路故障或者是UPP功能壞,需要到維修店維修。

4、也可能是排線板可能壞了,這是手機經常出現的問題。

二、解決方法:

1、建議重啟手機嘗試:同時按住電源鍵和下音量鍵7秒以上重啟設備;

2、若再次打開後依然白屏,此情況可能和使用的軟體有關。若是自行下載的軟體,建議卸載軟體重新安裝。

3、若是自帶的系統軟體,建議更新手機系統版本嘗試。

4、已是最新版本,請備份手機中數據(聯系人、信息、圖片等)然後恢復出廠設置嘗試。

若問題依然存在,建議攜帶購機發票、保修卡和手機到當地的手機購買處維修或者到附近手機維修店進行維修。

Ⅹ android app 如何與uvc攝像頭通訊

來看看是怎麼操作UVC攝像頭的吧.我們實現了一個專門檢測UVC攝像頭的服務:UVCCameraService類,主要代碼如下:
監聽
mUSBMonitor = new USBMonitor(this, new USBMonitor.OnDeviceConnectListener() { @Override
public void onAttach(final UsbDevice device) {
Log.v(TAG, "onAttach:" + device);
mUSBMonitor.requestPermission(device);
} @Override
public void onConnect(final UsbDevice device, final USBMonitor.UsbControlBlock ctrlBlock, final boolean createNew) {
releaseCamera(); if (BuildConfig.DEBUG) Log.v(TAG, "onConnect:"); try { final UVCCamera camera = new MyUVCCamera();
camera.open(ctrlBlock);
camera.setStatusCallback(new IStatusCallback() { // ... uvc 攝像頭鏈接成功

Toast.makeText(UVCCameraService.this, "UVCCamera connected!", Toast.LENGTH_SHORT).show(); if (device != null)
cameras.append(device.getDeviceId(), camera);
}catch (Exception ex){
ex.printStackTrace();
}
} @Override
public void onDisconnect(final UsbDevice device, final USBMonitor.UsbControlBlock ctrlBlock) { // ... uvc 攝像頭斷開鏈接
if (device != null) {
UVCCamera camera = cameras.get(device.getDeviceId()); if (mUVCCamera == camera) {
mUVCCamera = null;
Toast.makeText(UVCCameraService.this, "UVCCamera disconnected!", Toast.LENGTH_SHORT).show();
liveData.postValue(null);
}
cameras.remove(device.getDeviceId());
}else {
Toast.makeText(UVCCameraService.this, "UVCCamera disconnected!", Toast.LENGTH_SHORT).show();
mUVCCamera = null;
liveData.postValue(null);
}
} @Override
public void onCancel(UsbDevice usbDevice) {
releaseCamera();
} @Override
public void onDettach(final UsbDevice device) {
Log.v(TAG, "onDettach:");
releaseCamera();// AppContext.getInstance().bus.post(new UVCCameraDisconnect());
}
});

這個類主要實現UVC攝像頭的監聽\鏈接\銷毀\反監聽.當有UVC攝像頭鏈接成功後,會創建一個mUVCCamera對象.
然後在MediaStream里, 我們改造了switchCamera,當參數傳2時,表示要切換到UVCCamera(0,1分別表示切換到後置\前置攝像頭).
創建
在創建攝像頭時,如果是要創建uvc攝像頭,那直接從服務裡面獲取之前創建的mUVCCamera實例:
if (mCameraId == 2) {
UVCCamera value = UVCCameraService.liveData.getValue(); if (value != null) { // uvc camera.
uvcCamera = value;
value.setPreviewSize(width, height,1, 30, UVCCamera.PIXEL_FORMAT_YUV420SP,1.0f); return; // value.startPreview();
}else{
Log.i(TAG, "NO UVCCamera");
uvcError = new Exception("no uvccamera connected!"); return;
} // mCameraId = 0;
}123456789101112131415

預覽
在預覽時,如果uvc攝像頭已經創建了,那執行uvc攝像頭的預覽操作:
UVCCamera value = uvcCamera;if (value != null) {
SurfaceTexture holder = mSurfaceHolderRef.get(); if (holder != null) {
value.setPreviewTexture(holder);
} try {
value.setFrameCallback(uvcFrameCallback, UVCCamera.PIXEL_FORMAT_YUV420SP/*UVCCamera.PIXEL_FORMAT_NV21*/);
value.startPreview();
cameraPreviewResolution.postValue(new int[]{width, height});
}catch (Throwable e){
uvcError = e;
}
}1234567891011121314

這里我們選的colorFormat為PIXEL_FORMAT_YUV420SP 相當於標准攝像頭的NV21格式.
關閉預覽
同理,關閉時,調用的是uvc攝像頭的關閉.
UVCCamera value = uvcCamera; if (value != null) {
value.stopPreview();
}1234

銷毀
因為我們這里並沒有實質性的創建,所以銷毀時也僅將實例置為null就可以了.
UVCCamera value = uvcCamera;if (value != null) { // value.destroy();
uvcCamera = null;
}12345

有了這些操作,我們看看上層怎麼調用,
首先需要在Manifest裡面增加若干代碼,具體詳見UVCCamera工程說明.如下:
<activity android:name=".UVCActivity" android:launchMode="singleInstance">

<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

</activity>

然後,的代碼在UVCActivity里,這個類可以在library分支的myapplication工程里找到.即這里.
啟動或者停止UVC攝像頭推送:
public void onPush(View view) { // 非同步獲取到MediaStream對象.
getMediaStream().subscribe(new Consumer<MediaStream>() { @Override
public void accept(final MediaStream mediaStream) throws Exception { // 判斷當前的推送狀態.
MediaStream.PushingState state = mediaStream.getPushingState(); if (state != null && state.state > 0) { // 當前正在推送,那終止推送和預覽
mediaStream.stopStream();
mediaStream.closeCameraPreview();
}else{ // switch 0表示後置,1表示前置,2表示UVC攝像頭
// 非同步開啟UVC攝像頭
RxHelper.single(mediaStream.switchCamera(2), null).subscribe(new Consumer<Object>() { @Override
public void accept(Object o) throws Exception { // 開啟成功,進行推送.
// ...
mediaStream.startStream("cloud.easydarwin.org", "554", id);
}
}, new Consumer<Throwable>() { @Override
public void accept(final Throwable t) throws Exception { // ooop...開啟失敗,提示下...
t.printStackTrace();
runOnUiThread(new Runnable() { @Override
public void run() {
Toast.makeText(UVCActivity.this, "UVC攝像頭啟動失敗.." + t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
});
}

這樣,整個推送就完成了.如果一切順利,應當能在VLC播放出來UVC攝像頭的視頻了~~
我們再看看如何錄像.也非常簡單…
public void onRecord(View view) { // 開始或結束錄像.
final TextView txt = (TextView) view;
getMediaStream().subscribe(new Consumer<MediaStream>() { @Override
public void accept(MediaStream mediaStream) throws Exception { if (mediaStream.isRecording()){ // 如果正在錄像,那停止.
mediaStream.stopRecord();
txt.setText("錄像");
}else { // 沒在錄像,開始錄像...
// 表示最大錄像時長為30秒,30秒後如果沒有停止,會生成一個新文件.依次類推...
// 文件格式為test_uvc_0.mp4,test_uvc_1.mp4,test_uvc_2.mp4,test_uvc_3.mp4
String path = getExternalFilesDir(Environment.DIRECTORY_MOVIES) + "/test_uvc.mp4";
mediaStream.startRecord(path, 30000); final TextView pushingStateText = findViewById(R.id.pushing_state);
pushingStateText.append("\n錄像地址:" + path);
txt.setText("停止");
}
}
});
}21

UVC攝像頭還支持後台推送,即不預覽的情況下進行推送,同時再切換到前台繼續預覽.只需要調用一個介面即可實現,如下:
@Overridepublic void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) {
ms.setSurfaceTexture(surfaceTexture); // 設置預覽的surfaceTexture}@Overridepublic boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
ms.setSurfaceTexture(null); // 設置預覽窗口為null,表示關閉預覽功能
return true;
}123456789

如果要徹底退出uvc攝像頭的預覽\推送,那隻需要同時退出服務即可.
public void onQuit(View view) { // 退出
finish(); // 終止服務...
Intent intent = new Intent(this, MediaStream.class);
stopService(intent);
}1234567

## 獲取更多信息 ##

熱點內容
socket編程php 發布:2024-05-03 20:12:50 瀏覽:207
坦洲郵政局可以解壓嗎 發布:2024-05-03 20:09:55 瀏覽:731
二級程序編譯答案 發布:2024-05-03 18:41:35 瀏覽:654
領動自動精英版是哪個配置 發布:2024-05-03 18:37:30 瀏覽:151
java編譯器中cd什麼意思 發布:2024-05-03 18:36:00 瀏覽:390
傳奇伺服器如何刷錢 發布:2024-05-03 18:36:00 瀏覽:978
安卓版twitter怎麼注冊 發布:2024-05-03 18:28:05 瀏覽:894
Python邏輯優先順序 發布:2024-05-03 18:26:14 瀏覽:268
linux查看svn密碼 發布:2024-05-03 18:12:47 瀏覽:805
地鐵逃生怎麼進入游戲安卓 發布:2024-05-03 17:49:35 瀏覽:993