TownApplication.java 6.28 KB
package com.lotus.town;

import android.app.Application;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.widget.RemoteViews;

import com.ad.lib.AdManager;
import com.evernote.android.job.JobManager;
import com.lotus.town.ali.MonitorService;
import com.lotus.town.ali.job.AliveJob;
import com.lotus.town.ali.job.JobCreater;
import com.lotus.town.broadcast.BatteryBroadcast;
import com.lotus.town.broadcast.ScreenOnOffBroadCast;
import com.lotus.town.broadcast.WifiStatusBroadcast;
import com.lotus.town.config.SupportAction;
import com.lotus.town.dao.HubDatabaseHelper;
import com.lotus.town.notify.NotificationUtils;
import com.lotus.town.service.gms.GmsManager;
import com.lotus.town.service.rg.RegisterManager;
import com.lotus.town.wxapi.WxManager;
import com.sdk.Sdk;
import com.sdk.SharedPref;
import com.sdk.log.LogConstants;
import com.sdk.utils.ProcessUtils;
import com.umeng.api.UmengManager;
import com.umeng.message.PushAgent;
import com.umeng.message.UmengMessageHandler;
import com.umeng.message.UmengNotificationClickHandler;
import com.umeng.message.entity.UMessage;

public class TownApplication extends Application{
    private ScreenOnOffBroadCast screenOnOffBroadCast;
    private WifiStatusBroadcast wifiStatusBroadcast;
    private BatteryBroadcast batteryReceiver;

    private void initEverNote() {
        JobManager.create(this).addJobCreator(new JobCreater());
        AliveJob.scheduleJob();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Sdk.init(this);
        WxManager.register(this);
        if(getPackageName().equals(ProcessUtils.getCurProcessName(this))) {
            AdManager.init(this);
            HubDatabaseHelper.getInstance(this).init();
            Sdk.logger().logEvent(this, LogConstants.APP_START);
            RegisterManager.register();
            GmsManager.getUserInfo();
            initBroadCast();
            SharedPref.isFisrtLauncher(this);
            initEverNote();
        }

        UmengManager.init(this);
        PushAgent mPushAgent = UmengManager.initPush(this);
        UmengMessageHandler messageHandler = new UmengMessageHandler() {

            /**
             * 自定义通知栏样式的回调方法
             */
            @Override
            public Notification getNotification(Context context, UMessage msg) {
                switch (msg.builder_id) {

                    case 1:
                        NotificationUtils.init().createNotificationChannel(Sdk.app());
                        Notification.Builder builder = new Notification.Builder(context);
                        RemoteViews myNotificationView = new RemoteViews(context.getPackageName(),
                                R.layout.notification_view);
                        myNotificationView.setTextViewText(com.umeng.R.id.notification_title, msg.title);
                        myNotificationView.setTextViewText(com.umeng.R.id.notification_text, msg.text);
                        builder.setContent(myNotificationView)
                                .setSmallIcon(R.mipmap.ic_launcher)
                                .setTicker(msg.ticker)
                                .setAutoCancel(true);
                        builder.setContentIntent(PendingIntent.getActivity(context, 0,
                                NotificationUtils.getIntent(context,"com.lotus.town.SplashActivity"), PendingIntent.FLAG_UPDATE_CURRENT));
                        return builder.getNotification();
                    case 2:
                        NotificationUtils.init().createNotificationChannel(Sdk.app());
                        NotificationUtils.init().sendYmNotify(Sdk.app(),msg.text, msg.title);
                    default:
                        //默认为0,若填写的builder_id并不存在,也使用默认。
                        return super.getNotification(context, msg);
                }
            }
        };
        mPushAgent.setMessageHandler(messageHandler);

        UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler(){

            @Override
            public void dealWithCustomAction(Context context, UMessage msg){
            }

        };

        mPushAgent.setNotificationClickHandler(notificationClickHandler);
        initService();
    }

    private void initBroadCast() {

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_USER_PRESENT);
        filter.addAction(SupportAction.SCREEN_OFF_MY);
//        filter.addAction(SupportAction.SCREEN_ON_MY);
        filter.addAction(Intent.ACTION_TIME_TICK);
        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);

        filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        screenOnOffBroadCast = new ScreenOnOffBroadCast();
        registerReceiver(screenOnOffBroadCast,filter);

        registerNetworkConnectChangeReceiver();

        registerBatteryReceiver();

//        registerPhoneReceiver();
    }

    private void registerNetworkConnectChangeReceiver() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
        filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
        wifiStatusBroadcast = new WifiStatusBroadcast();
        registerReceiver(wifiStatusBroadcast, filter);
    }

    private void registerBatteryReceiver(){
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
        filter.addAction(Intent.ACTION_BATTERY_LOW);
        filter.addAction(Intent.ACTION_BATTERY_OKAY);
        filter.addAction(Intent.ACTION_POWER_CONNECTED);
        filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
        batteryReceiver = new BatteryBroadcast();

        this.registerReceiver(batteryReceiver, filter);
    }

    private void initService() {
        MonitorService.invoke(this);
    }

}