2

我有一个手电筒代码,它使用两个按钮(on_btn 和 off_btn)来打开和关闭手电筒。

如何将它们关联到一个按钮中?

很菜鸟可以给点详细的建议吗?

下面的代码是从答案中找到的:它适用于我的手机。但是在模拟器上单击按钮时它会崩溃。这是猫日志https://dl.dropbox.com/u/15065300/logcat1.png

第74行是:Parameters 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();

        }
    }
}
4

2 回答 2

2

您总是可以使用切换按钮而不是两个按钮。这是非常“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/

希望有帮助!

于 2013-01-21T17:53:50.247 回答
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
    }
}
于 2013-01-21T17:54:42.077 回答