问题描述
我正在创建一个自定义键盘,并在键盘内放置了一个相机的预览视图。但我似乎无法将它绑定到生命周期或获取相机提要。我的键盘查看服务如下:
public class MainActivity extends InputMethodService
{
private LinearLayout keyboardView;
InputMethodManager imm;
PreviewView mPreviewView;
Button capture;
@SuppressLint("InflateParams")
@Override
public View onCreateInputView()
{
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
LayoutInflater inflater=getLayoutInflater();
mPreviewView=(PreviewView)inflater.inflate(R.layout.keyboard_view,null).findViewById(R.id.camera);
capture=(Button)inflater.inflate((R.layout.keyboard_view),null).findViewById(R.id.button);
keyboardView = (LinearLayout) inflater.inflate(R.layout.keyboard_view,null);
startCamera();
return keyboardView;
}
//endregion
private void startCamera() {
final ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(this);
cameraProviderFuture.addListener(new Runnable() {
@Override
public void run() {
try {
ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
bindPreview(cameraProvider);
} catch (ExecutionException | InterruptedException e) {
// No errors need to be handled for this Future.
// This should never be reached.
}
}
},ContextCompat.getMainExecutor(getApplicationContext()));
}
void bindPreview(@NonNull ProcessCameraProvider cameraProvider) {
Preview preview = new Preview.Builder()
.build();
CameraSelector cameraSelector = new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build();
ImageAnalysis imageAnalysis = new ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build();
ImageCapture.Builder builder = new ImageCapture.Builder();
//vendor-Extensions (The CameraX extensions dependency in build.gradle)
HdrImageCaptureExtender hdrImageCaptureExtender = HdrImageCaptureExtender.create(builder);
// Query if extension is available (optional).
if (hdrImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
// Enable the extension if available.
hdrImageCaptureExtender.enableExtension(cameraSelector);
}
final ImageCapture imageCapture = builder
.build();
mPreviewView.setScaleType(PreviewView.ScaleType.FILL_CENTER);
preview.setSurfaceProvider(mPreviewView.getSurfaceProvider());
Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner) this,cameraSelector,preview,imageAnalysis,imageCapture);
capture.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap image = mPreviewView.getBitmap();
//Do something with the bitmap
}
});
}
有什么想法可以在其中实现相机预览视图,或者甚至调用相机捕获意图?两者中的任何一个都可以,直到它无误地将位图返回给我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)