package com.mm.android.deviceaddmodule.services;
|
|
import android.app.IntentService;
|
import android.app.Notification;
|
import android.app.NotificationChannel;
|
import android.app.NotificationManager;
|
import android.app.PendingIntent;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.net.wifi.WifiInfo;
|
import android.os.Build;
|
import android.support.annotation.Nullable;
|
import android.support.annotation.RequiresApi;
|
|
import com.dahua.mobile.utility.network.DHNetworkUtil;
|
import com.dahua.mobile.utility.network.DHWifiUtil;
|
import com.mm.android.deviceaddmodule.R;
|
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.ProviderManager;
|
import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration;
|
import com.mm.android.deviceaddmodule.mobilecommon.eventbus.event.CloseTimeFilterEvent;
|
import com.mm.android.deviceaddmodule.mobilecommon.eventbus.event.NetWorkChangeCheckEvent;
|
import com.mm.android.deviceaddmodule.receiver.SucceedClickReceiver;
|
import com.mm.android.deviceaddmodule.receiver.TimeoutClickReceiver;
|
|
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.ThreadMode;
|
|
import java.util.Timer;
|
import java.util.TimerTask;
|
|
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
|
public class TimeFilterService extends IntentService {
|
private static final String TAG = TimeFilterService.class.getSimpleName();
|
private final static int WIFI_STATE_NOTIFY_ID = 2222; //通知ID
|
private static final int MAX = 40 * 1000;//40秒
|
private Timer timer = new Timer();
|
private DHWifiUtil mDHWifiUtil;
|
private String mNetSsid;
|
|
|
public TimeFilterService() {
|
super(TAG);
|
}
|
|
@Override
|
public void onCreate() {
|
super.onCreate();
|
mDHWifiUtil = new DHWifiUtil(this.getApplicationContext());
|
}
|
|
|
@Override
|
protected void onHandleIntent(@Nullable Intent intent) {
|
if (intent == null)
|
return;
|
mNetSsid = intent.getStringExtra(LCConfiguration.SSID);
|
|
if(!EventBus.getDefault().isRegistered(this)){
|
EventBus.getDefault().register(this);
|
}
|
|
if (timer==null){
|
timer = new Timer();
|
}
|
timer.schedule(new TimerTask() {
|
@Override
|
public void run() {
|
Intent intent = new Intent();
|
intent.setClass(TimeFilterService.this,TimeoutClickReceiver.class);
|
showNotification(getString(R.string.application_name), getString(R.string.add_device_time_filter_tip), intent);
|
}
|
}, MAX);
|
}
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void noticeTimeFilterListener(CloseTimeFilterEvent event) {
|
closeService();
|
}
|
|
private void closeService(){
|
if (timer != null) {
|
timer.cancel();
|
timer = null;
|
}
|
if (EventBus.getDefault().isRegistered(this)) {
|
EventBus.getDefault().unregister(this);
|
}
|
}
|
|
@Subscribe(threadMode = ThreadMode.ASYNC)
|
public void checkNetWorkChange(NetWorkChangeCheckEvent event){
|
if(isHotWifiConnect()){
|
Intent intent = new Intent();
|
intent.setClass(TimeFilterService.this,SucceedClickReceiver.class);
|
showNotification(getString(R.string.application_name), getString(R.string.add_device_connect_finish_to_next), intent);
|
closeService();
|
}
|
}
|
|
//是否已连上设备热点
|
public boolean isHotWifiConnect() {
|
boolean isWifiConnected = DHNetworkUtil.NetworkType.NETWORK_WIFI.equals(DHNetworkUtil.getNetworkType(this.getApplicationContext()));
|
WifiInfo wifiInfo = mDHWifiUtil.getCurrentWifiInfo();
|
return !(wifiInfo == null) && wifiInfo.getSSID().equals("\"" + mNetSsid + "\"");
|
}
|
|
private void showNotification(String title, String context, Intent intent) {
|
if(ProviderManager.getAppProvider().getAppType() != LCConfiguration.APP_LECHANGE_OVERSEA){
|
return;
|
}
|
|
NotificationManager notifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
PendingIntent mPendingIntent = PendingIntent.getBroadcast(this,0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
Notification.Builder builder = null;
|
Notification.BigTextStyle style = new Notification.BigTextStyle();
|
style.setBigContentTitle(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
|
title : "");//标题设置为消息推送带过来的消息类型
|
style.bigText(context);//设置推送消息富文本
|
|
String notificationId = "TimeFilterId";
|
String notificationName = "TimeFilter";
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { //26以上,必须设置ChannelId
|
NotificationChannel channel = new NotificationChannel(notificationId, notificationName, NotificationManager.IMPORTANCE_HIGH);
|
notifyManager.createNotificationChannel(channel);
|
builder = new Notification.Builder(this)
|
.setStyle(style)
|
.setSmallIcon(R.drawable.small_icon)
|
.setAutoCancel(true)
|
.setWhen(System.currentTimeMillis())
|
.setShowWhen(true)
|
.setContentTitle(title)
|
.setContentText(context)
|
.setContentIntent(mPendingIntent)
|
.setChannelId(notificationId);
|
|
} else {
|
builder = new Notification.Builder(this)
|
.setStyle(style)
|
.setSmallIcon(R.drawable.small_icon)
|
.setAutoCancel(true)
|
.setContentTitle(title)
|
.setWhen(System.currentTimeMillis())
|
.setContentText(context)
|
.setContentIntent(mPendingIntent);
|
|
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
|
builder.setShowWhen(true);
|
}
|
}
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
|
notifyManager.notify(WIFI_STATE_NOTIFY_ID, builder.build());
|
}
|
}
|
|
|
}
|