在一个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);
}
即可。