我正在尝试构建一个应用程序,尝试在开始视频录制之前自动对焦相机.直接使用MediaRecorder不会自动对焦相机.为此我使用Camera和使用回调我可以自动对焦它.但是提供这个实例给MediaRecorder了我很多问题.以下是用于录制的代码
public boolean startRecording()
{
try
{
mCamera.unlock();
mediaRecorder = new MediaRecorder();
mediaRecorder.setCamera(mCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
CamcorderProfile profile = CamcorderProfile
.get(CamcorderProfile.QUALITY_LOW);
mediaRecorder.setProfile(profile);
mediaRecorder.setMaxDuration(maxDurationInMs);
File file = new File(outputFile);
if (file.exists())
file.delete();
file = new File(outputFile);
try
{
file.createNewFile();
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
Log.e("Deepak", "*** first catch ***");
}
mediaRecorder.setOutputFile(outputFile);
mediaRecorder.setPreviewDisplay(mHolder.getSurface());
mediaRecorder.setMaxFileSize(maxFileSizeInBytes);
mediaRecorder.prepare();
mediaRecorder.start();
return true;
}
catch (IllegalStateException e)
{
Log.e(TAG, e.getMessage());
e.printStackTrace();
return false;
}
catch (IOException …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我正在使用Android相机拍照.我已经建立了自己的Android相机.按下按钮拍摄照片.
像这样的东西:
public void onClick(View arg0) {
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
if (imageData != null) {
Intent mIntent = new Intent();
Bundle b = new Bundle();
b.putByteArray("imageData", imageData);
Intent i = new Intent(mContext, ViewPhoto.class);
i.putExtras(b);
startActivity(i);
setResult(FOTO_MODE, mIntent);
finish();
}
}
};
Run Code Online (Sandbox Code Playgroud)
拍摄照片后,我使用intent并将字节发送到另一个活动.
最大的问题是,如果我通过按下按钮逐个拍摄几张照片,我的应用程序会在此行崩溃:
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
Run Code Online (Sandbox Code Playgroud)
这就是我的logcat的样子:
java.lang.RuntimeException: takePicture failed
at android.hardware.Camera.native_takePicture(Native Method)
at android.hardware.Camera.takePicture(Camera.java:746)
at android.hardware.Camera.takePicture(Camera.java:710)
at com.Xperiaproject.TakePhoto.onClick(TakePhoto.java:216)
at android.view.View.performClick(View.java:2534)
at android.view.View$PerformClick.run(View.java:9210)
at android.os.Handler.handleCallback(Handler.java:587)
at …Run Code Online (Sandbox Code Playgroud) 在我的Android相机应用程序中,如果我将屏幕固定到横向,那么在横向模式下,它似乎必须被看到.但如果我将它固定到肖像,那么相机预览将被视为水平.它为什么会发生?什么是溶剂呢?
我在主菜单中有两个按钮.我按下第一个按钮时调用相机.在这里,我没有遇到任何问题.相机正常工作.拍完照片后,我回到主菜单,再次按下第一个按钮.我在这里得到了这个问题.相机正确调用.但是我ANR error (Reason: keyDispatchingTimedOut)在拍摄时却得到了.如何解决这个问题?
编辑::
我正在使用以下代码,
按钮监听器,
Button imageButton = (Button) findViewById(R.id.button1);
imageButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(activity, ImageActivity.class);
startActivity(intent);
}
});
Run Code Online (Sandbox Code Playgroud)
ImageActivity.java
public class ImageActivity extends Activity implements SurfaceHolder.Callback {
private Camera camera = null;
private SurfaceHolder surfaceHolder = null;
private boolean previewRunning = false;
private Button btnDone, btnCapture, btnRetake;
private Bitmap mBitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.surface_screen);
SurfaceView surfaceView = …Run Code Online (Sandbox Code Playgroud) 嗨我想在相机中显示一个矩形,这样当用户捕捉时,只能处理矩形内的区域.不知道怎么办呢?并且可以通过沿着角落拖动来调整矩形大小.
我没有打电话给相机应用程序.我正在使用相机API.
主要活动
public class MainActivity extends Activity implements TextureView.SurfaceTextureListener{
private Camera mCamera;
private TextureView mTextureView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextureView = new TextureView(this);
mTextureView.setSurfaceTextureListener(this);
setContentView(mTextureView);
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
{
mCamera = Camera.open(0);
try {
mCamera.setPreviewTexture(surface);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {
mCamera.stopPreview();
mCamera.release();
return true;
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1,
int arg2) { …Run Code Online (Sandbox Code Playgroud) 我想实现切换火炬功能.因此,相机不会被捕获并崩溃 - 就像Lollipop一样 - 我正在尝试使用setTorchModeAPI 23.我有一个代码实现来打开或关闭火炬; 但是,我不知道如何检查闪光灯的当前状态.
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
String[] cameras = manager.getCameraIdList();
for (int i = 0; i < cameras.length; i++) {
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameras[i]);
boolean flashAvailable = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
if (flashAvailable) {
boolean flashState = getFlashState(); //MISSING METHOD
manager.setTorchMode(cameras[i], !flashState);
}
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
那么,如何在getFlashState不使用旧相机API的情况下实现?是否可以在不拍摄相机的情况下完成?
我想知道如何在相机预览上放置一个轮廓.到目前为止,我已经有以下示例工作,它只是预览相机.
http://developer.android.com/reference/android/view/TextureView.html
我正在尝试进行相机预览,我在其中显示了一个轮廓,以便使用应用程序的人知道应该拍摄照片的位置,然后点击一个按钮,拍摄照片,当然没有剪影在图片里.
如何才能做到这一点?我似乎找不到任何关于如何在纹理视图上放置叠加层的示例.
我目前在我的android上安装了Droid cam应用程序,它已被检测到并通过wifi(Droid Cam客户端)在Skype上流式传输。但是,无论我输入什么数字,它都不会流到OpenCV。
cap=cv2.VideoCapture()
Run Code Online (Sandbox Code Playgroud)
除此之外,我还有一个IP地址,请问有什么方法可以实现此目的,以便OpenCV可以从摄像机无线读取过程图像?我知道它甚至还没有开始读取相机,因为我已经使用以下代码对其进行了测试,每次运行它都会返回FALSE。
cap=cv2.Videocapture(0) #Use default cam
i=0
while(i<50):
ret,frame=cap.read()
print ret
Run Code Online (Sandbox Code Playgroud)
不断返回false,表示无法识别相机:L
当我想使用相机拍照时,我在CameraSource上遇到一些问题。我想要的只是用我在xml文件上创建的按钮拍照,并使用“ CameraSource”拍照,因为我也在使用“ TextRecognizer”。相机工作正常,但是当我按下按钮拍照时会出现问题。
清单文件:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
我的变量:
SurfaceView cameraView;
TextView textView;
CameraSource camera_source;
final int RequestCameraPermissionID = 1001;
Run Code Online (Sandbox Code Playgroud)
类:
// Starting the CameraSource. This will be in the 'OnCreate' function. This function works.
private void OpenCameraSource(){
final TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build();
if (!textRecognizer.isOperational()) {
Log.w("Steal_Activity", "Detector activity are not yet available");
Toast.makeText(getApplicationContext(),"Detector activity are not yet available",Toast.LENGTH_SHORT).show();
} else {
camera_source = new CameraSource.Builder(getApplicationContext(),textRecognizer)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedPreviewSize(1280, 1024)
.setRequestedFps(2.0f)
.setAutoFocusEnabled(true)
.build();
cameraView.getHolder().addCallback(new SurfaceHolder.Callback() …Run Code Online (Sandbox Code Playgroud)