采取interface的方式来实现数据的传递。

在一个android 项目中,线程来采集麦克风的声音,并解析出其中包含的水印(water mark)信息,并需要将信息传递给当前的激活的activity , 在比较多个方法之后,我们采取interface的方式来实现数据的传递。

1.首先定义一个interface:

public interface DetectEvent {
    public  void requestPrint( String text);
    public  void onWaterMarkUnknown();
    public  void onWaterMarkDetected(long contentID, MarkedTime markedTime);
}

2.再创建一个class

public class DetectEventManager {

    private static DetectEvent mEvent;

    public static void setEventListener(DetectEvent nm){
        mEvent = nm;
    }


    public static boolean isEventNull(){
        if (mEvent != null)
            return false;
        else
            return true;
    }

    public static void requestPrint(String text){
        if (mEvent != null)
             mEvent.requestPrint(text);
    }

    public static void onWaterMarkUnknown(){
        if (mEvent != null)
            mEvent.onWaterMarkUnknown();
    }

    public static void onWaterMarkDetected(long contentID, MarkedTime markedTime){
        if (mEvent != null)
            mEvent.onWaterMarkDetected( contentID,  markedTime);
    }
}

3.在线程里面只要调用Class即可:

```java

```java
DetectEventManager.onWaterMarkDetected(event.contentID,mmarkedTime);`


4. 在某个activity 里面实现:

```java
DetectEventManager.setEventListener(event);
    private DetectEvent event = new DetectEvent() {
        @Override
        public void requestPrint(String msg) {
        }

        @Override
        public void onWaterMarkDetected(long contentID, MarkedTime markedTime) {
        } 
        @Override
        public void onWaterMarkUnknown() {
        }
    };

5.在

@Override
public void onDestroy() {
    DetectEventManager.setEventListener(null);

即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值