package com.mm.android.deviceaddmodule;
|
|
import android.app.Service;
|
import android.content.BroadcastReceiver;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.IntentFilter;
|
import android.os.Binder;
|
import android.os.IBinder;
|
import com.lechange.opensdk.device.LCOpenSDK_DeviceInit;
|
import com.lechange.opensdk.media.DeviceInitInfo;
|
import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration;
|
import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil;
|
import com.mm.android.deviceaddmodule.model.DeviceAddModel;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
public class SeachDeviceService extends Service {
|
public static final String TAG = "SeachDeviceService";
|
private CopyOnWriteArrayList<SearchDeviceManager.ISearchDeviceListener> mListenerList;
|
private DeviceInitInfo deviceInitInfo;
|
private BroadcastReceiver mReceiver;
|
|
|
|
@Override
|
public void onCreate() {
|
super.onCreate();
|
mListenerList = new CopyOnWriteArrayList<>();
|
if(deviceInitInfo==null){
|
deviceInitInfo = new DeviceInitInfo();
|
}
|
// 注册广播监听器监听网络变化
|
IntentFilter intentFilter = new IntentFilter();
|
intentFilter.addAction(LCConfiguration.CONNECTIVITY_CHAGET_ACTION);
|
mReceiver = new Broadcast();
|
registerReceiver(mReceiver, intentFilter);
|
|
}
|
|
@Override
|
public IBinder onBind(Intent intent) {
|
return new SearchDeviceBinder();
|
}
|
|
/**
|
* 局域网内搜索设备信息
|
*/
|
private void startSearchDevices() {
|
|
LCOpenSDK_DeviceInit.getInstance().stopSearchDeviceExs();
|
LogUtil.debugLog(TAG,"startSearchDevices():::::::");
|
LCOpenSDK_DeviceInit.getInstance()
|
.searchDeviceInitInfoExs(DeviceAddModel.newInstance().getDeviceInfoCache().getDeviceSn(), 30 * 1000, new LCOpenSDK_DeviceInit.ISearchDeviceListener() {
|
@Override
|
public void onDeviceSearched(String snCode, DeviceInitInfo info) {
|
if(mListenerList!=null){
|
for (int i = 0; i < mListenerList.size(); i++) {
|
SearchDeviceManager.ISearchDeviceListener listener = mListenerList.get(i);
|
listener.onDeviceSearched(snCode,info);
|
}
|
}
|
}
|
});
|
|
}
|
|
|
private void stopSearchDevices() {
|
LCOpenSDK_DeviceInit.getInstance().stopSearchDeviceExs();
|
}
|
|
private void registerListener(SearchDeviceManager.ISearchDeviceListener listener) {
|
if (mListenerList != null && !mListenerList.contains(listener)) {
|
mListenerList.add(listener);
|
}
|
}
|
|
private void unRegisterListener(SearchDeviceManager.ISearchDeviceListener listener) {
|
if (mListenerList != null && mListenerList.contains(listener)) {
|
mListenerList.remove(listener);
|
}
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
unregisterReceiver(mReceiver);
|
stopSearchDevices();
|
if (mListenerList != null) {
|
mListenerList.clear();
|
}
|
mListenerList = null;
|
}
|
|
public class SearchDeviceBinder extends Binder {
|
|
public void startSearchDevices() {
|
SeachDeviceService.this.startSearchDevices();
|
}
|
|
public void stopSearchDevices() {
|
SeachDeviceService.this.stopSearchDevices();
|
}
|
|
public void registerListener(SearchDeviceManager.ISearchDeviceListener listener) {
|
SeachDeviceService.this.registerListener(listener);
|
}
|
|
public void unRegisterListener(SearchDeviceManager.ISearchDeviceListener listener) {
|
SeachDeviceService.this.unRegisterListener(listener);
|
}
|
}
|
|
private class Broadcast extends BroadcastReceiver {
|
@Override
|
public void onReceive(Context context, Intent intent) {
|
if (LCConfiguration.CONNECTIVITY_CHAGET_ACTION.equals(intent.getAction())) {
|
//监听到网络变化
|
LogUtil.debugLog(TAG,"检测到网络变化");
|
SearchDeviceManager.getInstance().clearDevice();
|
startSearchDevices();
|
}
|
}
|
}
|
}
|