我想创建一个应用程序,它有一个用于录制视频的按钮和另一个单独的切换按钮,用于在录制视频期间打开闪光灯。
我已经使用camera2 API为最近的androids构建了相机应用程序,可以通过图像按钮访问。我将火炬模式设置为切换按钮,但这根本不起作用。但切换按钮可以单独访问闪光灯。
public class MainActivity extends AppCompatActivity {
private TextureView.SurfaceTextureListener mSurfaceTextureListener = new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
setupCamera(width,height);
connectCamera();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createFolder();
mMediaRecorder = new MediaRecorder();
mTextureView = (TextureView) findViewById(R.id.textureView);
mRecordButtonimg = (ImageButton) findViewById(R.id.video_online_button);
mRecordButtonimg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (misRecording) {
misRecording = false;
mRecordButtonimg.setImageResource(R.mipmap.ic_launcher);
mMediaRecorder.stop();
mMediaRecorder.reset();
startPreview();
} else {
checkWriteStoragePermission();
misRecording = true;
mRecordButtonimg.setImageResource(R.mipmap.ic_launcher_round);
}
}
});
mButtonLights = (ToggleButton) findViewById(R.id.buttonLights);
mButtonLights.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
cameraManager.setTorchMode(mCameraId, mButtonLights.isChecked());
}catch (CameraAccessException e){
e.printStackTrace();
}
}
});
}
}
我刚刚将设置的火炬模式添加到 onClickListener 中。我应该将其添加到其他地方吗?因为它不会将其添加到预览中!而且我已经在代码中检查后置摄像头(带手电筒的 id 为 0),所以我不知道为什么代码不起作用。
了解如何在相机预览时打开和关闭手电筒。单击按钮可打开/关闭灯,请使用以下代码:
//at some other function where camera is initialised and start preview
//...
Camera camera = Camera.open();
camera.startPreview();
//...
boolean lightOn = false;
//...
buttonLight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Camera.Parameters p = camera.getParameters();
if (!lightOn) {
lightOn = true;
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
} else {
lightOn = false;
p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
}
}
});
快乐编码! :D
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)