容易的监听器(转)

简单的监听器(转)在做Camera的时候遇到一个问题如下:拍照功能是Camera.java里的方法实现的。笑脸检测是在Ca

简单的监听器(转)

在做Camera的时候遇到一个问题如下:

拍照功能是Camera.java里的方法实现的。笑脸检测是在Camera.java中放了个回调函数。FaceView中的检测

现在有没有笑脸的结果是FaceView.java中得到的。但是拍照方法在Camera.java中。

需要实现的就是检测到笑脸以后自动拍照。

最终用监听的方式实现的。代码如下:


先定义一个接口:

[java] view plaincopy
package com.java.listenerdemo; 
 
public interface SmileFaceListener { 
    void withSmileFace(); 


FaceView中调用接口方法:
[java] view plaincopy
package com.java.listenerdemo; 
 
public class FaceView { 
     
    private SmileFaceListener mSmileFaceListener; 
    private boolean checkedSmileFace ; 
     
    public FaceView(){ 
         
    } 
     
    public void setCheckedSmileFace(boolean checkedSmileFace){ 
        this.checkedSmileFace = checkedSmileFace; 
    } 
     
    public void setSmileFaceListener(SmileFaceListener smileFaceListener){ 
        this.mSmileFaceListener = smileFaceListener; 
    } 
     
    /**
     * 在非 Camera.java 的其他类中被调用检测是否有笑脸
     */ 
    public void checkSmileFace(){ 
         
        //check..... 
         
        //checkedSmileFace = true or false 
         
        if(checkedSmileFace && mSmileFaceListener != null){ 
            mSmileFaceListener.withSmileFace(); 
        } 
    } 
     


在Camera.java中绑定监听器
[java] view plaincopy
package com.java.listenerdemo; 
 
import android.app.Activity; 
import android.os.Bundle; 
 
public class Camera extends Activity implements SmileFaceListener{ 
     
    private FaceView mFaceView; 
     
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        mFaceView = new FaceView(); 
        mFaceView.setSmileFaceListener(this); 
         
    } 
 
    /**
     * 执行拍照
     */ 
    private void shooting(){ 
        //caputer now 
    } 
     
    @Override 
    public void withSmileFace() { 
        // TODO Auto-generated method stub 
        shooting(); 
    } 


第一次写成监听这样的形式。还挺喜悦。