我有一个手电筒代码,使用两个按钮(on_btn和off_btn)来打开和关闭手电筒。
如何将它们关联在一个按钮中?
非常新手你能给出详细的建议吗?
以下代码可以从答案中找到:它适用于我的手机。但是在模拟器上,它会在单击按钮时崩溃。这是cat-log https://dl.dropbox.com/u/15065300/logcat1.png
第74行是:参数params = mCamera.getParameters();
有人可以提出任何建议吗?
public class FlashLight extends Activity {
private final static String LOG_TAG = "FlashLight";
private Button mOnBtn;
private Camera mCamera;
private boolean isActive;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//this will be inside your onCreate...
mOnBtn = (Button) findViewById(R.id.on_btn);
mOnBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
flipSwitch();
processClick();
}
});
}
//these will be outside your onCreate
public void flipSwitch() {
isActive = !isActive;
}
@Override
protected void onResume() {
super.onResume();
try{
mCamera = Camera.open();
mCamera.startPreview();
Toast.makeText(getApplicationContext(),"Camera is present", Toast.LENGTH_LONG).show();
} catch( Exception e ){
Log.e(LOG_TAG, "Impossible d'ouvrir la camera");
}
}
@Override
protected void onPause() {
if( mCamera != null ){
mCamera.release();
mCamera = null;
}
super.onPause();
}
public void processClick() {
if(isActive) {
Parameters params = mCamera.getParameters();
params.set("flash-mode", "torch");
mCamera.setParameters( params );
mCamera.startPreview();
}
else {
Parameters params = mCamera.getParameters();
params.set("flash-mode", "off");
mCamera.setParameters( params );
mCamera.stopPreview();
}
}
}
答案 0 :(得分:2)
您始终可以使用Toggle Button而不是两个按钮。它非常“Android正式”。
//Create a toggle button
ToggleButton tg = (ToggleButton) findviewbyId(R.id.togbut);
//Implement onClickListener
tg.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v){
//Flip on or off
}
});
在onClick()
方法中,您可以根据按钮开启或关闭时应用的操作执行您需要执行的操作。
在xml布局中,您可以说明切换按钮在打开和关闭时的内容。
<ToggleButton
android:id="@+id/togbut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Button On"
android:textOff="Button Off"
android:checked="true" />
单击切换按钮时,它将自动更改文本并切换。
以下是一个很好的例子:http://www.mkyong.com/android/android-togglebutton-example/
希望有所帮助!
答案 1 :(得分:2)
使用按钮翻转布尔值,然后更改手电筒以相应地开启和关闭。
private boolean isActive;
//this will be inside your onCreate...
button.setOnClickListener(new View.onClickListener() {
public void onClick(View v) {
flipSwitch();
processClick();
}
}
//these will be outside your onCreate
public void flipSwitch() {
isActive = !isActive;
}
public void processClick() {
if(isActive) {
//button is clicked on
}
else {
//button is clicked off
}
}