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 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(); } } } }