我正在使用本机应用程序打开相机的意图:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri photoUri = Uri.fromFile(getOutputPhotoFile());
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, CAMERA_PHOTO_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
每次打开的相机(前/后相机)都像上次打开本机相机应用程序一样.这意味着如果我最后一次关闭本机相机应用程序时后置摄像头处于活动状态,那么当我启动相机意图时,后置摄像头将处于活动状态.
我想直接启动前置摄像头.有谁知道怎么做?
如果我只使用CAMERA_FACING_BACK或CAMERA_FACING_FRONT所有工作正常.
切换CAMERA_FACING_BACK到时我遇到了麻烦CAMERA_FACING_FRONT.
我的代码片段:
public class PhotoCameraActivity extends Activity implements OnClickListener {
private SurfaceView cameraView;
private Button turnButton;
private Camera camera = null;
private Callback listener;
private static int camId = Camera.CameraInfo.CAMERA_FACING_BACK;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo_camera_main);
prepareActivity();
}
private void prepareActivity() {
cameraView = (SurfaceView) findViewById(R.id.photo_camera_surface_view);
turnButton = (ImageButton) findViewById(R.id.turn_button);
turnButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.equals(turnButton)) {
if (Camera.getNumberOfCameras() > 1 && camId < Camera.getNumberOfCameras() …Run Code Online (Sandbox Code Playgroud) 我想创建一个录像机,到目前为止还没有弄清楚如何设置参数,以成功通过MediaRecorder.prepare()方法.
执行以下方法
public void start() throws IOException{
String state = android.os.Environment.getExternalStorageState();
if(!state.equals(Environment.MEDIA_MOUNTED))
{
throw new IOException("SD card is not mounted. It is " + state + ".");
}
File directory = new File(path).getParentFile();
if(!directory.exists() && !directory.mkdirs())
{
throw new IOException("Path to file could not be created.");
}
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
recorder.setVideoFrameRate(15);
recorder.setVideoSize(176, 144);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start();
this.state = VideoRecorderState.STATE_RECORDING;
}
Run Code Online (Sandbox Code Playgroud)
它会在线上引发异常 recorder.prepare().
如何设置参数以便能够捕获视频?
我需要一个功能来检查前置摄像头是否存在,如果存在,则显示预览.我找到了一些链接,但每个链接都谈到了一个特定的设备:
任何人都可以为此提供通用代码吗?或者也许是可以与所有设备一起使用的组合代码?
我很困惑在哪里添加
使用特征
清单中的标签.我在我的应用程序中使用相机.我添加了许可,但我很困惑在哪里添加功能,以便使用前置摄像头.你能帮我吗?
我已经尝试了几个我在网上找到的答案,例如:
Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
mCamera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)
要么
mMediaRecorder.setVideoSource(2);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我还在清单文件上设置了权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我已经搜索了StackOverflow,我知道之前已经问过这个问题,但似乎没有确定的解决方案,任何形式的帮助都将受到赞赏.
注意:我在2.1平台上使用Galaxy S.
我在android中开发了一个Camera应用程序.它使用表面视图捕获图像.下面是我用来打开相机的代码
try {
// attempt to get a Front Camera instance
c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out
.println("fail to connect to Front Camera");
}
if (c == null) {
try {
// attempt to get a Back Camera instance
c = Camera.open(1);
} catch (Exception e) {
// TODO: handle exception
System.out
.println("fail to connect to Camera with id = 1");
}
}
if (c == null) {
try {
// attempt …Run Code Online (Sandbox Code Playgroud) 我正在开发一个演示,我必须检查设备是否有前置摄像头,如果设备有前置摄像头,那么我必须打开它来捕获图像.
我搜索了很多,但没有找到任何解决方案.请给我一个解决方案帮助我.
提前致谢.