当前位置:首页 » 安卓系统 » 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

## 获取更多信息 ##

热点内容
c语言控制符 发布:2024-05-11 14:56:00 浏览:755
linux怎么卸载mysql 发布:2024-05-11 14:51:57 浏览:417
同步安卓源码 发布:2024-05-11 14:50:25 浏览:361
安卓如何设置抖音后台不更新 发布:2024-05-11 14:48:49 浏览:965
一元夺宝还需要什么服务器 发布:2024-05-11 14:29:01 浏览:801
sqljava实现 发布:2024-05-11 14:24:36 浏览:392
dell服务器怎么拆 发布:2024-05-11 14:24:32 浏览:530
c语言程序指令 发布:2024-05-11 14:24:31 浏览:208
vb编程实例下载 发布:2024-05-11 14:15:01 浏览:102
本机的手机密码是多少 发布:2024-05-11 14:01:54 浏览:997