我正在开发一个演示,我必须检查设备是否有前置摄像头,如果设备有前置摄像头,那么我必须打开它来捕获图像.
我搜索了很多,但没有找到任何解决方案.请给我一个解决方案帮助我.
提前致谢.
最近我写了一个Android应用程序,需要从相机中的构建中拍摄照片并将其恢复到我的应用程序中.我使用了许多教程中的一个,一切正常.但后来我在另一台设备上测试了它并没有任何功能.似乎有问题,所以我如何确保我可以在每台设备上拍照?(看我的回答,这更像是一个教程)
以下是我使用flaten()打印的Android相机参数.我使用Surface视图并使用camera.open()手动打开我的相机.我使用setParameter()设置了camera.paramter.
-max=30;zoom=0;taking-picture-zoom=0;zoom-supported=true;sharpness-min=0;sharpness=10;contrast=5;whitebalance=auto;jpeg-quality=100;preview-format-values=yuv420sp;jpeg-thumbnail-quality=75;preview-format=yuv420sp;preview-size=576x432;focal-length=4.92;iso=auto;meter-mode=meter-center;front-camera-mode=mirror;flash-mode-values=off,auto,on,torch;preview-frame-rate-values=15;preview-frame-rate=15;focus-mode-values=auto,infinity;jpeg-thumbnail-width=768;jpeg-thumbnail-size-values=768x576,640x480,512x384,0x0;zoom-ratios=100,114,131,151,174,200;saturation-def=5;preview-size-values=1280x720,800x480,768x432,720x480,640x480,576x432,480x320,400x240,384x288,352x288,320x240,272x272,240x240,240x160,176x144;smart-contrast=off;picture-size-values=3264x2448,3264x1952,2592x1952,2592x1552,2048x1536,2048x1216,1600x1200,1280x960,1280x768,1024x768,640x480,640x384,512x384,400x400,272x272;contrast-min=0;min-exposure-compensation=-4;brightness-min=0;antibanding=auto;taking-picture-zoom-min=0;saturation-min=1;contrast-max=10;vertical-view-angle=38;taking-picture-zoom-max=30;contrast-def=5;brightness-max=6;horizontal-view-angle=49.5;brightness=3;jpeg-thumbnail-height=576;cam-mode=0;focus-mode=auto;sharpness-def=10;front-camera-mode-values=mirror,reverse;picture-format-values=jpeg;saturation-max=10;max-exposure-compensation=4;exposure-compensation=0;exposure-compensation-step=0.5;flash-mode=off;effect-values=none,mono,negative,solarize,sepia,posterize,aqua;meter-mode-values=meter-average,meter-center,meter-spot;picture-size=1024x768;max-zoom=5;effect=none;saturation=5;whitebalance-values=auto,incandescent,fluorescent,daylight,cloudy-daylight;picture-format=jpeg;brightness-def=3;iso-values=auto,deblur,100,200,400,800,1250;antibanding-values=off,50hz,60hz,auto**
Run Code Online (Sandbox Code Playgroud)
**
**
在我的应用程序中,我最初加载来自库的所有图像,即(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
用户可以通过我的应用程序拍照,但我有一个自定义相机,即我不使用默认手机相机拍照,我有自己的表面视图,我直接处理相机对象,并处理相机图片.我将此图像保存在自定义文件夹中.
一旦用户返回我的应用程序,我希望新拍摄的照片出现在我的画廊中
问题:新拍摄的图片没有出现在我用MediaStore.Images.Media.EXTERNAL_CONTENT_URI加载的光标中
只有当我重新安装应用程序并强制重新扫描时,问题才会消失.
我该如何解决?我希望立即拍摄的每张照片都会出现在我的光标中?
我已经做了一些研究,但是不要告诉我带有如下所述的startactivity解决方案的内容值
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我有自己的相机,我没有使用手机的默认相机活动
我也试过了
getContentResolver().notifyChange(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null);
Run Code Online (Sandbox Code Playgroud)
这也行不通
有人可以帮忙吗?
谢谢
我想在尝试打开qr代码阅读器之前检查设备是否有任何相机.
我有以下代码:
public boolean checkDeviceCompatibility() {
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
return true;
} else {
// use front camera
Toast.makeText(
context,
"This device does not have a back camera so it has automatically reverted to the front camera",
Toast.LENGTH_SHORT).show();
return true;
}
} else {
util.displayErrorDialog(
context,
"This device does not have any cameras and therefore cannot make use of the QR Code feature.");
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但现在,如果我在我的Galaxy S3上使用两个摄像头以调试模式运行此代码.第一个if语句返回false.
为什么会这样?
camera android android-hardware android-package-managers android-camera
我正在尝试使用以下代码打开相机应用程序:
Camera camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(p);
camera.startPreview();
camera.release();
Run Code Online (Sandbox Code Playgroud)
它不会抛出任何错误,但它也不会打开相机.无论是否使用camera.release()选项我都试过了.有什么我做错了吗?
我有谷歌地图片段的错误.片段放在我的活动中,当我打开导航抽屉时,它会显示在地图片段后面.这很奇怪,因为导航抽屉位于布局中片段的顶部.
CameraView也有同样的问题.
在android 2.3和一些上检测到的问题
每当我在横向模式下使用我的相机获取纵向视图时,我为纵向和横向模式准备了两种不同的布局.
就像我仍然在纵向模式下预览一样无论我在风景或肖像模式下使用相机,但是一旦我删除了这一行: mCamera.setDisplayOrientation(90); 我正在横向模式下预览,要么我在风景中使用相机,要么在纵向模式下使用相机
PreviewSurface.java:-
public class PreviewSurface extends SurfaceView implements
SurfaceHolder.Callback {
public static final String LOG_TAG = "CameraPreview";
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
// Constructor that obtains context and camera
@SuppressWarnings("deprecation")
public PreviewSurface(Context context, Camera camera) {
super(context);
this.mCamera = camera;
this.mSurfaceHolder = this.getHolder();
this.mSurfaceHolder.addCallback(this);
this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.mSurfaceHolder.setFixedSize(100, 100);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
} catch (IOException e) {
// left blank for now
}
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) { …Run Code Online (Sandbox Code Playgroud) 我没有找到一种没有相机界面拍照的简单方法.我只需要从相机中获取一张照片并将其保存到文件中.
当我用sudo python3 program.py执行并按下de switch 1时抛出下一个异常:
Taking picture...
Picture takeng...
Traceback (most recent call last):
File "main.py", line 21, in <module>
if GPIO.input(switch1):
RuntimeError: You must setup() the GPIO channel first
Run Code Online (Sandbox Code Playgroud)
我为这个项目使用了覆盆子凸轮库和rpi.gpio库.任何人都知道我的代码中发生了什么?
import RPi.GPIO as GPIO
import time
import picamera
# initial config for gpio ports
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# input switches
switch1 = 22
switch2 = 23
switch3 = 24
# setup
GPIO.setup(switch1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(switch2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(switch3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# main loop
while True:
if GPIO.input(switch1):
print ("Taking picture...") …Run Code Online (Sandbox Code Playgroud) camera ×10
android ×8
surfaceview ×2
gallery ×1
google-maps ×1
gpio ×1
ios ×1
ipad ×1
iphone ×1
preview ×1
python ×1
raspberry-pi ×1