美好的一天!我真的很紧张地编程我的android应用程序。这是问题的家伙。 我有应用程序使用相机广播与表面View.I只有一个按钮,按照想法应该访问相机然后访问后拍照。 我试过if和else语句,但没有帮助我。我搜索整个互联网没有人能给出任何好的解决方案。 因此,想法一个活动中只有一个按钮应该执行这两个功能:打开摄像头后打开摄像头。 请帮助我,并提前感谢。
答案 0 :(得分:0)
声音就像一个简单的问题。其中一个解决方案是使用2个侦听器并在它们之间切换:
Button button;
final Button.OnClickListener listener2 = new View.OnClickListener() {
@Override
public void onClick(View v) {
// Take picture
}
};
Button.OnClickListener listener1 = new View.OnClickListener() {
@Override
public void onClick(View v) {
// Open camera
v.setOnClickListener(listener2);
}
};
button.setOnClickListener(listener1);
// Later at some point, e.g. when camera is closed:
button.setOnClickListener(listener1);
答案 1 :(得分:0)
您还可以使用布尔值来跟踪相机状态(打开或关闭)。然后根据布尔值,您可以调用两种不同的方法。喜欢:mCameraOpen是boolean
`@Override
public void onClick(View v){
if (mCameraOpen){
methodToCaptureImage();
}else{
mCameraOpen = true;
methodToOpenCamera();
}
}`
答案 2 :(得分:0)
你绝对不需要2个听众。你甚至不需要一个!只需在布局中使用android:onClick属性将函数绑定到按钮按下,如下所示:android:onClick="onButtonPress"
。然后使用相机本身来确定按钮的动作。只有在相机对象不活动时才使其为null。这是Java代码:
Camera mCamera = null;
Button mButton;
private void openCamera(){
try{
mCamera = Camera.open();
mButton.setText(<your text here>);
} catch (RuntimeException ex){
// Handle exception if cannot access camera
}
}
private void releaseCamera(){
mCamera.release();
mCamera = null;
mButton.setText(<your text here>);
}
private void captureImage(){
// Whatever you do to capture image
}
public void onButtonPress(View clickedView){
if (mCamera == null) openCamera();
else captureImage();
}
希望这有帮助!