我想要实现的是捕获图片而不显示预览,直接将输出发送到ImageReader.我使用Camera2Basic示例作为起点.但是,我的调用ImageReader永远不会被调用,因此没有图像被发送到它Surface.我真的需要先显示预览吗?
这是摄像机代码,它按照异步回调的流程排序:
private ImageReader imageReader;
private Handler backgroundHandler;
private HandlerThread backgroundThread;
private String cameraId;
private CameraDevice cameraDevice;
private CameraCaptureSession cameraCaptureSession;
@Override
public void onCreate() {
setupCamera2();
}
private void setupCamera2() {
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
for (String cameraId : manager.getCameraIdList()) {
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
if (characteristics.get(CameraCharacteristics.LENS_FACING) != CameraCharacteristics.LENS_FACING_FRONT) {
continue;
}
this.cameraId = cameraId;
int[] picSize = Settings.getPictureSize();
int picWidth = picSize[0];
int picHeight = picSize[1];
imageReader = …Run Code Online (Sandbox Code Playgroud) 当应用程序的主视图在屏幕上时,我需要在我的Android应用程序中连续扫描QR码.主视图应包含带摄像头预览的窗口,但不包含全屏摄像头预览.
用法示例:包含扫描的QR码列表和相机预览的主视图.扫描新的QR码时,会将其添加到列表中.
可能吗?
我正在为背景录像开发应用程序,这就是为什么我使用WindowManager,但它对我没有用.以下错误:
08-23 15:38:21.021: E/AndroidRuntime(4200): java.lang.RuntimeException: Unable to create service com.example.prankapp.BackgroundVideoRecorder: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@418c0b68 -- permission denied for this window type
08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2277)
08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.access$1600(ActivityThread.java:128)
08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1215)
08-23 15:38:21.021: E/AndroidRuntime(4200): at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 15:38:21.021: E/AndroidRuntime(4200): at android.os.Looper.loop(Looper.java:137)
08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.main(ActivityThread.java:4517)
08-23 15:38:21.021: E/AndroidRuntime(4200): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 15:38:21.021: E/AndroidRuntime(4200): at java.lang.reflect.Method.invoke(Method.java:511)
08-23 15:38:21.021: E/AndroidRuntime(4200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
08-23 15:38:21.021: E/AndroidRuntime(4200): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
08-23 15:38:21.021: E/AndroidRuntime(4200): at …Run Code Online (Sandbox Code Playgroud) 我的相机应用程序有问题.相机活动处于纵向模式.所以我给了
camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)
根据SO中的不同帖子,这将在纵向模式下正常工作.
但它不能正常使用不同的设备.问题是,预览向左或向右旋转90度.在Htc中没关系.但是对于Galaxy系列,它不起作用.
谁能帮我 ?
我必须设计一个应用程序,该应用程序必须从相机拍摄图片而不在布局中显示它,没有任何用户界面(如点击按钮....)并存储图片?
在我的应用程序的一个要求中,我需要弹出一个包含前置摄像头预览的活动,同时我还需要打开手电筒。但是我观察到,我能够打开手电筒并返回相机,但不是前置摄像头和手电筒在一起。以下是我的代码:
public class Cam extends Activity {
private static int cameraId = 0;
private Camera camera;
//Adding for camera preview
public static FrameLayout preview;
public static CameraPreview mPreview;
Context context;
ImageButton btnSwitch;
private boolean isFlashOn;
private boolean hasFlash;
Parameters params;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("Cam","Inside onCreate");
setContentView(R.layout.cam);
context = getApplicationContext();
btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);
hasFlash = getApplicationContext().getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
startCamera();
// displaying button image
toggleButtonImage();
btnSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFlashOn) {
turnOffFlash(); …Run Code Online (Sandbox Code Playgroud)