RyCarPlayer/app/src/main/java/com/zlm/hp/ui/MainActivity.java
如果当时 3d55b0914c #### 2022-02-13 V7.0.5
- *.[改进]启动软件时自动播放歌曲。
- *.[改进]当播放视频时,自动退出歌词界面。
- *.[改进]当播放歌曲时,自动进入歌词或视频界面。
- *.[修复]修复写真图片无法实现随机展现的BUG。
2022-02-13 22:15:53 +08:00

1515 lines
56 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.zlm.hp.ui;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Message;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.dou361.dialogui.DialogUIUtils;
import com.dou361.dialogui.listener.DialogUIListener;
import com.suke.widget.SwitchButton;
import com.zlm.down.entity.DownloadTask;
import com.zlm.hp.adapter.PopPlayListAdapter;
import com.zlm.hp.adapter.TabFragmentAdapter;
import com.zlm.hp.application.HPApplication;
import com.zlm.hp.async.AsyncHandlerTask;
import com.zlm.hp.audio.utils.MediaUtil;
import com.zlm.hp.constants.ConfigInfo;
import com.zlm.hp.constants.Constants;
import com.zlm.hp.db.util.AudioInfoDB;
import com.zlm.hp.db.util.DownloadThreadInfoDB;
import com.zlm.hp.entity.AudioInfo;
import com.zlm.hp.entity.TimerInfo;
import com.zlm.hp.fragment.DownloadMusicFragment;
import com.zlm.hp.fragment.LastSongFragment;
import com.zlm.hp.fragment.MeFragment;
import com.zlm.hp.fragment.RecommendFragment;
import com.zlm.hp.fragment.SearchFragment;
import com.zlm.hp.fragment.SongFragment;
import com.zlm.hp.fragment.SpecialFragment;
import com.zlm.hp.manager.ActivityManager;
import com.zlm.hp.manager.AudioPlayerManager;
import com.zlm.hp.manager.DownloadAudioManager;
import com.zlm.hp.manager.LyricsManager;
import com.zlm.hp.manager.OnLineAudioManager;
import com.zlm.hp.receiver.AppSystemReceiver;
import com.zlm.hp.receiver.AudioBroadcastReceiver;
import com.zlm.hp.receiver.FragmentReceiver;
import com.zlm.hp.receiver.PhoneReceiver;
import com.zlm.hp.receiver.PhoneV4Receiver;
import com.zlm.hp.service.AudioPlayerService;
import com.zlm.hp.util.AppBarUtil;
import com.zlm.hp.util.AppOpsUtils;
import com.zlm.hp.util.ColorUtil;
import com.zlm.hp.util.ImageUtil;
import com.zlm.hp.util.IntentUtil;
import com.zlm.hp.util.PreferencesUtil;
import com.zlm.hp.util.TimeUtil;
import com.zlm.hp.util.ToastUtil;
import com.zlm.hp.widget.IconfontImageButtonTextView;
import com.zlm.hp.widget.IconfontIndicatorTextView;
import com.zlm.hp.widget.IconfontTextView;
import com.zlm.hp.widget.WhiteTranLinearLayout;
import com.zlm.hp.widget.WhiteTranRelativeLayout;
import com.zlm.libs.widget.MusicSeekBar;
import com.zlm.libs.widget.SlidingMenuLayout;
import java.io.File;
import java.security.cert.CertPathValidatorException;
import java.util.ArrayList;
import java.util.List;
/**
* @Description: 主界面
* @author: zhangliangming
* @date: 2018-07-29 10:21
**/
public class MainActivity extends BaseActivity {
/**
* slidingmenu
*/
private SlidingMenuLayout mSlidingMenuLayout;
private SlidingMenuLayout.SlidingMenuOnListener mSlidingMenuOnListener;
/**
* 中间视图
*/
private ViewPager mViewPager;
/**
*
*/
private LinearLayout mPlayerBarLL;
/**
* 图标按钮
*/
private IconfontImageButtonTextView mIconButton;
private IconfontImageButtonTextView mSearchButton;
/**
* tab菜单图标按钮
*/
private IconfontIndicatorTextView[] mTabImageButton;
/**
* 选中索引
*/
private int mSelectedIndex = 0;
/**
* 保存退出时间
*/
private long mExitTime;
/**
* 设置
*/
private LinearLayout mSettingLL;
/**
* 退出
*/
private LinearLayout mExitLL;
/**
* 定时关闭
*/
private WhiteTranRelativeLayout mTimerPowerOffLL;
private TextView mTimerTv;
//wifi
private WhiteTranRelativeLayout mWifiLR;
/**
* 工具
*/
private WhiteTranLinearLayout mToolLL;
/**
* 更新歌曲
*/
private WhiteTranLinearLayout mUpdateMusic;
/**
* wifi开关
*/
private SwitchButton mWifiSwitchButton;
private WhiteTranRelativeLayout mDesktoplrcLR;
/**
* 桌面歌词开关
*/
private SwitchButton mDesktoplrcSwitchButton;
private WhiteTranRelativeLayout mLocklrcLR;
/**
* 锁屏歌词开关
*/
private SwitchButton mLocklrcSwitchButton;
/**
* 歌手头像
*/
private ImageView mArtistImageView;
/**
* 歌曲名称tv
*/
private TextView mSongNameTextView;
/**
* 歌手tv
*/
private TextView mSingerNameTextView;
/**
* 播放按钮
*/
private ImageView mPlayImageView;
/**
* 暂停按钮
*/
private ImageView mPauseImageView;
/**
* 下一首按钮
*/
private ImageView mNextImageView;
/**
* 歌曲进度
*/
private MusicSeekBar mMusicSeekBar;
///////////////////////////////歌曲列表弹出窗口布局/////////////////////////////////////////
private boolean mIsShowPopPlayList = false;
/**
* 播放列表全屏界面
*/
private RelativeLayout mPopPlayListRL;
/**
* 播放列表内容界面
*/
private RelativeLayout mPopPlayContentRL;
/**
*
*/
private RecyclerView mPlayListRListView;
private PopPlayListAdapter mAdapter;
/**
* 当前播放列表歌曲总数
*/
private TextView mPopListSizeTv;
//播放模式
private IconfontTextView mModeAllTv;
private IconfontTextView mModeRandomTv;
private IconfontTextView mModeSingleTv;
////////////////////////////////////////////////////////////////////////////
/**
* 基本数据
*/
private ConfigInfo mConfigInfo;
/**
* 加载基本数据
*/
private final int LOAD_CONFIG_DATA = 1;
/**
* 更新计时器
*/
private final int MESSAGE_WHAT_TIMERUPDATE = 2;
/**
*
*/
private FragmentReceiver mFragmentReceiver;
/**
* 音频广播
*/
private AudioBroadcastReceiver mAudioBroadcastReceiver;
/**
* app系统广播
*/
private AppSystemReceiver mAppSystemReceiver;
/**
* 线控 5.0以下
*/
private PhoneV4Receiver mPhoneV4Receiver;
/**
* 线控 5.0以上
*/
private PhoneReceiver mPhoneReceiver;
@Override
protected int setContentLayoutResID() {
return R.layout.activity_main;
}
//是否第一次使用
private boolean isFirst=true;
@Override
protected void initViews(Bundle savedInstanceState) {
initSlidingMenu();
initViewPage();
initTitleViews();
initMenu();
initPlayBarViews();
initReceiver();
initService();
loadData();
AudioPlayerManager.newInstance(mContext).play(mMusicSeekBar.getProgress());
}
/**
* 初始服务
*/
private void initService() {
AudioPlayerService.startService(this);
}
private void ShowLrcView()
{
if (mSlidingMenuLayout.isShowingMenu()) {
mSlidingMenuLayout.hideMenu();
return;
}
if (mIsShowPopPlayList) {
hidePopPlayListView();
return;
}
if(!ActivityManager.getInstance().existActivity(LrcActivity.class)) {
Intent intent = new Intent(MainActivity.this, LrcActivity.class);
startActivity(intent);
}
//去掉动画
overridePendingTransition(0, 0);
}
/**
* 初始化广播
*/
private void initReceiver() {
//fragment广播
mFragmentReceiver = new FragmentReceiver(mContext);
mFragmentReceiver.setReceiverListener(new FragmentReceiver.FragmentReceiverListener() {
@Override
public void onReceive(Context context, final Intent intent, final int code) {
mUIHandler.post(new Runnable() {
@Override
public void run() {
handleFragmentReceiver(intent, code);
}
});
}
/**
* 处理fragment
* @param intent
* @param code
*/
private void handleFragmentReceiver(final Intent intent, int code) {
switch (code) {
case FragmentReceiver.ACTION_CODE_OPEN_RECOMMENDFRAGMENT:
//排行
Bundle recommendBundle = intent.getBundleExtra(SongFragment.ARGUMENTS_KEY);
SongFragment recommendSongFragment = SongFragment.newInstance();
recommendSongFragment.setArguments(recommendBundle);
mSlidingMenuOnListener.addAndShowFragment(recommendSongFragment);
break;
case FragmentReceiver.ACTION_CODE_OPEN_SPECIALFRAGMENT:
case FragmentReceiver.ACTION_CODE_OPEN_LOCALFRAGMENT:
case FragmentReceiver.ACTION_CODE_OPEN_LIKEFRAGMENT:
case FragmentReceiver.ACTION_CODE_OPEN_RECENTFRAGMENT:
Bundle bundle = intent.getBundleExtra(SongFragment.ARGUMENTS_KEY);
SongFragment songFragment = SongFragment.newInstance();
songFragment.setArguments(bundle);
mSlidingMenuOnListener.addAndShowFragment(songFragment);
break;
case FragmentReceiver.ACTION_CODE_OPEN_DOWNLOADFRAGMENT:
DownloadMusicFragment downloadMusicFragment = DownloadMusicFragment.newInstance();
mSlidingMenuOnListener.addAndShowFragment(downloadMusicFragment);
break;
case FragmentReceiver.ACTION_CODE_CLOSE_FRAGMENT:
mSlidingMenuOnListener.hideFragment();
break;
}
}
});
mFragmentReceiver.registerReceiver(mContext);
//音频广播
mAudioBroadcastReceiver = new AudioBroadcastReceiver();
mAudioBroadcastReceiver.setReceiverListener(new AudioBroadcastReceiver.AudioReceiverListener() {
@Override
public void onReceive(Context context, final Intent intent, final int code) {
mUIHandler.post(new Runnable() {
@Override
public void run() {
handleAudioBroadcastReceiver(intent, code);
}
});
}
private void handleAudioBroadcastReceiver(Intent intent, int code) {
switch (code) {
case AudioBroadcastReceiver.ACTION_CODE_NULL:
//空数据
mSongNameTextView.setText(R.string.def_songName);
mSingerNameTextView.setText(R.string.def_artist);
mPauseImageView.setVisibility(View.INVISIBLE);
mPlayImageView.setVisibility(View.VISIBLE);
//
mMusicSeekBar.setEnabled(false);
mMusicSeekBar.setProgress(0);
mMusicSeekBar.setSecondaryProgress(0);
mMusicSeekBar.setMax(0);
//
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.bpz);
mArtistImageView.setImageDrawable(new BitmapDrawable(bitmap));
mArtistImageView.setTag("");
//重置额外歌词状态
mConfigInfo.setExtraLrcStatus(ConfigInfo.EXTRALRCSTATUS_NOSHOWEXTRALRC);
if (mAdapter != null)
mAdapter.reshViewHolder(null);
break;
case AudioBroadcastReceiver.ACTION_CODE_INIT:
Bundle initBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
final AudioInfo initAudioInfo = initBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (initAudioInfo != null) {
mSongNameTextView.setText(initAudioInfo.getSongName());
mSingerNameTextView.setText(initAudioInfo.getSingerName());
mPauseImageView.setVisibility(View.INVISIBLE);
mPlayImageView.setVisibility(View.VISIBLE);
//设置进度条
mMusicSeekBar.setEnabled(true);
mMusicSeekBar.setMax((int) initAudioInfo.getDuration());
mMusicSeekBar.setProgress((int) initAudioInfo.getPlayProgress());
mMusicSeekBar.setSecondaryProgress(0);
//加载歌手头像
ImageUtil.loadSingerImage(mContext, mArtistImageView, initAudioInfo.getSingerName(), mConfigInfo.isWifi(), 400, 400, new AsyncHandlerTask(mUIHandler, mWorkerHandler), new ImageUtil.ImageLoadCallBack() {
@Override
public void callback(Bitmap bitmap) {
//if (bitmap != null) {
AudioBroadcastReceiver.sendNotifiyImgLoadedReceiver(mContext, initAudioInfo);
// }
}
});
//加载歌词
String keyWords = initAudioInfo.getTitle();
LyricsManager.newInstance(mContext).loadLyrics(initAudioInfo.getFilePath(),keyWords, keyWords, initAudioInfo.getDuration() + "", initAudioInfo.getHash(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler), null);
if (mAdapter != null) {
if (mIsShowPopPlayList) {
//定位
int position = AudioPlayerManager.newInstance(mContext).getCurSongIndex(mConfigInfo.getAudioInfos(), mConfigInfo.getPlayHash());
if (position != -1) {
((LinearLayoutManager) mPlayListRListView.getLayoutManager()).scrollToPositionWithOffset(position, 0);
}
}
mAdapter.reshViewHolder(initAudioInfo.getHash());
}
} else {
if (mAdapter != null)
mAdapter.reshViewHolder(null);
}
//region 加载歌词界面
//endregion
break;
case AudioBroadcastReceiver.ACTION_CODE_PLAY:
if (mPauseImageView.getVisibility() != View.VISIBLE)
mPauseImageView.setVisibility(View.VISIBLE);
if (mPlayImageView.getVisibility() != View.INVISIBLE)
mPlayImageView.setVisibility(View.INVISIBLE);
break;
case AudioBroadcastReceiver.ACTION_CODE_SHOWLRCVIEW:
ShowLrcView();
break;
case AudioBroadcastReceiver.ACTION_CODE_PLAYING:
Bundle playingBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
AudioInfo playingAudioInfo = playingBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (playingAudioInfo != null) {
mMusicSeekBar.setProgress((int) playingAudioInfo.getPlayProgress());
}
break;
case AudioBroadcastReceiver.ACTION_CODE_STOP:
//暂停完成
if (mPauseImageView.getVisibility() != View.INVISIBLE)
mPauseImageView.setVisibility(View.INVISIBLE);
if (mPlayImageView.getVisibility() != View.VISIBLE)
mPlayImageView.setVisibility(View.VISIBLE);
break;
case AudioBroadcastReceiver.ACTION_CODE_SEEKTO:
Bundle seektoBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
AudioInfo seektoAudioInfo = seektoBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
if (seektoAudioInfo != null) {
mMusicSeekBar.setProgress(seektoAudioInfo.getPlayProgress());
}
break;
case AudioBroadcastReceiver.ACTION_CODE_DOWNLOAD_FINISH:
case AudioBroadcastReceiver.ACTION_CODE_DOWNLOADONEDLINESONG:
if (!mIsShowPopPlayList || mAdapter == null) {
return;
}
//网络歌曲下载完成
Bundle downloadedBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
DownloadTask downloadedTask = downloadedBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
String downloadedHash = downloadedTask.getTaskId();
if (downloadedTask != null && !TextUtils.isEmpty(downloadedHash)) {
mAdapter.reshViewHolder(downloadedHash);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_UPDATE_PLAYLIST:
if (!mIsShowPopPlayList || mAdapter == null) {
return;
}
//设置当前歌曲数据
List<AudioInfo> audioInfoList = mConfigInfo.getAudioInfos();
mPopListSizeTv.setText(audioInfoList.size() + "");
mAdapter.notifyDataSetChanged();
break;
case AudioBroadcastReceiver.ACTION_CODE_DOWNLOADONLINESONG:
//网络歌曲下载中
Bundle downloadOnlineSongBundle = intent.getBundleExtra(AudioBroadcastReceiver.ACTION_BUNDLEKEY);
DownloadTask downloadingTask = downloadOnlineSongBundle.getParcelable(AudioBroadcastReceiver.ACTION_DATA_KEY);
String hash = mConfigInfo.getPlayHash();
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(hash);
if (audioInfo != null && downloadingTask != null && !TextUtils.isEmpty(hash) && hash.equals(downloadingTask.getTaskId())) {
int downloadedSize = DownloadThreadInfoDB.getDownloadedSize(mContext, downloadingTask.getTaskId(), OnLineAudioManager.mThreadNum);
double pre = downloadedSize * 1.0 / audioInfo.getFileSize();
int downloadProgress = (int) (mMusicSeekBar.getMax() * pre);
mMusicSeekBar.setSecondaryProgress(downloadProgress);
}
break;
case AudioBroadcastReceiver.ACTION_CODE_NOTIFY_DESLRC_HIDE_ACTION:
mDesktoplrcSwitchButton.setChecked(false);
mConfigInfo.setShowDesktopLrc(false).save();
//
AudioBroadcastReceiver.sendReceiver(mContext, AudioBroadcastReceiver.ACTION_CODE_NOTIFY_DESLRC);
//关闭桌面歌词
HPApplication applicationTtemp = (HPApplication) getApplication();
applicationTtemp.stopFloatService();
break;
case AudioBroadcastReceiver.ACTION_CODE_NOTIFY_DESLRC_SHOW_ACTION:
if (!hasShowFloatWindowPermission()) return;
mDesktoplrcSwitchButton.setChecked(true);
mConfigInfo.setShowDesktopLrc(true).save();
//
AudioBroadcastReceiver.sendReceiver(mContext, AudioBroadcastReceiver.ACTION_CODE_NOTIFY_DESLRC);
//启动桌面歌词
HPApplication application = (HPApplication) getApplication();
application.startFloatService();
break;
}
}
});
mAudioBroadcastReceiver.registerReceiver(mContext);
//系统
mAppSystemReceiver = new AppSystemReceiver();
mAppSystemReceiver.setReceiverListener(new AppSystemReceiver.AppSystemReceiverListener() {
@Override
public void onReceive(Context context, final Intent intent, final int code) {
mUIHandler.post(new Runnable() {
@Override
public void run() {
handleAppSystemBroadcastReceiver(intent, code);
}
});
}
private void handleAppSystemBroadcastReceiver(Intent intent, int code) {
switch (code) {
case AppSystemReceiver.ACTION_CODE_TOAST_ERRORMSG:
Bundle toastErrorMSGBundle = intent.getBundleExtra(AppSystemReceiver.ACTION_BUNDLEKEY);
String msg = toastErrorMSGBundle.getString(AppSystemReceiver.ACTION_DATA_KEY);
ToastUtil.showTextToast(mContext, msg);
break;
case AppSystemReceiver.ACTION_CODE_TIMER_SETTING:
mUIHandler.removeMessages(MESSAGE_WHAT_TIMERUPDATE);
//设置timer
case AppSystemReceiver.ACTION_CODE_TIMER_UPDATE:
Message tempMsg = Message.obtain();
tempMsg.what = MESSAGE_WHAT_TIMERUPDATE;
Bundle timerBundle = intent.getBundleExtra(AppSystemReceiver.ACTION_BUNDLEKEY);
TimerInfo timerInfo = timerBundle.getParcelable(AppSystemReceiver.ACTION_DATA_KEY);
mConfigInfo.setTimerInfo(timerInfo);
if (timerInfo != null) {
tempMsg.obj = timerInfo;
mUIHandler.sendMessageDelayed(tempMsg, 1000);
} else {
mUIHandler.sendMessage(tempMsg);
}
//更新
break;
case AppSystemReceiver.ACTION_CODE_SCREEN_OFF:
//关闭屏幕
if (mConfigInfo.isShowLockScreenLrc()) {
Intent lockIntent = new Intent(MainActivity.this,
LockActivity.class);
lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(lockIntent);
//去掉动画
overridePendingTransition(0, 0);
}
break;
}
}
});
mAppSystemReceiver.registerReceiver(mContext);
//线控
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mPhoneReceiver = new PhoneReceiver(mContext);
mPhoneReceiver.registerReceiver(mContext);
} else {
mPhoneV4Receiver = new PhoneV4Receiver(mContext);
mPhoneV4Receiver.registerReceiver(mContext);
}
}
/**
* 加载数据
*/
private void loadData() {
//加载数据
mWorkerHandler.sendEmptyMessage(LOAD_CONFIG_DATA);
}
@Override
protected void handleUIMessage(Message msg) {
switch (msg.what) {
case LOAD_CONFIG_DATA:
resetMenuPageData();
break;
case MESSAGE_WHAT_TIMERUPDATE:
TimerInfo timerInfo = (TimerInfo) msg.obj;
if (timerInfo != null) {
timerInfo.setCurTime(timerInfo.getCurTime() - 1000);
mTimerTv.setText(TimeUtil.parseTimeToTimerString(timerInfo.getCurTime()));
if (timerInfo.getCurTime() <= 0) {
//定时关闭应用
ActivityManager.getInstance().exit();
} else {
AppSystemReceiver.sendTimerUpdateMsgReceiver(mContext, timerInfo);
}
} else {
mTimerTv.setText("");
}
break;
}
}
/**
* 重新设置menu页面的数据
*/
private void resetMenuPageData() {
mWifiSwitchButton.setChecked(mConfigInfo.isWifi());
mDesktoplrcSwitchButton.setChecked(mConfigInfo.isShowDesktopLrc());
mLocklrcSwitchButton.setChecked(mConfigInfo.isShowLockScreenLrc());
//wifi
mWifiSwitchButton.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(SwitchButton view, boolean isChecked) {
if (mConfigInfo.isWifi() != isChecked)
mConfigInfo.setWifi(isChecked).save();
}
});
//桌面
mDesktoplrcSwitchButton.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(SwitchButton view, boolean isChecked) {
if (isChecked) {
if (!hasShowFloatWindowPermission()) return;
}
if (mConfigInfo.isShowDesktopLrc() != isChecked) {
mConfigInfo.setShowDesktopLrc(isChecked).save();
//
AudioBroadcastReceiver.sendReceiver(mContext, AudioBroadcastReceiver.ACTION_CODE_NOTIFY_DESLRC);
}
}
});
//锁屏
mLocklrcSwitchButton.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(SwitchButton view, boolean isChecked) {
boolean askLockPermission = PreferencesUtil.getBoolean(mContext, Constants.ASK_LOCK_PERMISSION, true);
if (askLockPermission) {
//弹出窗口显示
String tipMsg = getString(R.string.locklrc_tip);
DialogUIUtils.showMdAlert(MainActivity.this, getString(R.string.tip_title), tipMsg, new DialogUIListener() {
@Override
public void onPositive() {
PreferencesUtil.putBoolean(mContext, Constants.ASK_LOCK_PERMISSION, false);
//跳转权限设置页面
IntentUtil.gotoPermissionSetting(MainActivity.this);
mLocklrcSwitchButton.setChecked(false);
}
@Override
public void onNegative() {
mLocklrcSwitchButton.setChecked(false);
}
@Override
public void onCancle() {
mLocklrcSwitchButton.setChecked(false);
}
}).setCancelable(true, false).show();
return;
}
if (mConfigInfo.isShowLockScreenLrc() != isChecked)
mConfigInfo.setShowLockScreenLrc(isChecked).save();
}
});
}
@Override
protected void handleWorkerMessage(Message msg) {
switch (msg.what) {
case LOAD_CONFIG_DATA:
mConfigInfo = ConfigInfo.obtain();
AudioPlayerManager.newInstance(mContext).init();
mUIHandler.sendEmptyMessage(LOAD_CONFIG_DATA);
break;
}
}
/**
* 初始化slidingmenu
*/
private void initSlidingMenu() {
mSlidingMenuLayout = findViewById(R.id.slidingMenuLayout);
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
int screensWidth = displayMetrics.widthPixels;
int menuViewWidth = screensWidth / 4 * 3;
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, AppBarUtil.getStatusBarHeight(getApplicationContext()));
//菜单界面
LinearLayout menuView = (LinearLayout) LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_menu, null);
FrameLayout.LayoutParams menuLayoutParams = new FrameLayout.LayoutParams(menuViewWidth, FrameLayout.LayoutParams.MATCH_PARENT);
boolean isAddStatusBar = AppBarUtil.isAddStatusBar();
if (isAddStatusBar) {
View menuStatusBarView = menuView.findViewById(R.id.status_bar_view);
menuStatusBarView.setVisibility(View.VISIBLE);
menuStatusBarView.setLayoutParams(lp);
}
//主界面
LinearLayout mainView = (LinearLayout) LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_main, null);
FrameLayout.LayoutParams mainLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
mPlayerBarLL = findViewById(R.id.playerBar);
mPlayerBarLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ShowLrcView();
}
});
//mSlidingMenuLayout.addIgnoreHorizontalView(mPlayerBarLL);
mSlidingMenuLayout.addOnPageChangeListener(new SlidingMenuLayout.OnPageChangeListener() {
@Override
public void onMainPageScrolled(int leftx) {
mPlayerBarLL.setTranslationX(leftx);
}
@Override
public void onHideFragment(Fragment fragment) {
if(fragment != null && fragment instanceof SearchFragment){
//强制关闭输入法
hideInput(mContext,mSlidingMenuLayout);
}
}
});
mViewPager = mainView.findViewById(R.id.viewpage);
//添加状态栏
if (isAddStatusBar) {
View mainStatusBarView = mainView.findViewById(R.id.status_bar_view);
mainStatusBarView.setBackgroundColor(ColorUtil.parserColor(ContextCompat.getColor(getApplicationContext(), R.color.defColor)));
mainStatusBarView.setVisibility(View.VISIBLE);
mainStatusBarView.setLayoutParams(lp);
}
//
mSlidingMenuLayout.setFragmentPaintFade(true);
mSlidingMenuLayout.setAllowScale(false);
mSlidingMenuLayout.onAttachView(menuLayoutParams, menuView, mainLayoutParams, mainView);
mSlidingMenuOnListener = new SlidingMenuLayout.SlidingMenuOnListener() {
@Override
public void addAndShowFragment(Fragment fragment) {
mSlidingMenuLayout.addAndShowFragment(getSupportFragmentManager(), fragment);
}
@Override
public void hideFragment() {
mSlidingMenuLayout.hideFragment();
}
};
}
/**
* 强制隐藏输入法键盘
*
* @param context Context
* @param view EditText
*/
private void hideInput(Context context, View view) {
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
/**
* 初始化viewpage
*/
private void initViewPage() {
ArrayList<Class> fragmentsClass = new ArrayList<Class>();
//
fragmentsClass.add(MeFragment.class);
fragmentsClass.add(LastSongFragment.class);
fragmentsClass.add(RecommendFragment.class);
fragmentsClass.add(SpecialFragment.class);
TabFragmentAdapter adapter = new TabFragmentAdapter(getSupportFragmentManager(), fragmentsClass);
mViewPager.setAdapter(adapter);
mViewPager.setOffscreenPageLimit(fragmentsClass.size());
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == 0) {
mSlidingMenuLayout.setDragType(SlidingMenuLayout.LEFT_TO_RIGHT);
} else {
mSlidingMenuLayout.setDragType(SlidingMenuLayout.NONE);
}
if (position != mSelectedIndex) {
mTabImageButton[mSelectedIndex].setSelected(false);
mTabImageButton[position].setSelected(true);
mSelectedIndex = position;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mViewPager.setCurrentItem(mSelectedIndex);
}
/**
* 初始化标题栏视图
*/
private void initTitleViews() {
//图标
mIconButton = findViewById(R.id.iconImageButton);
mIconButton.setConvert(true);
mIconButton.setPressed(false);
mIconButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSlidingMenuLayout.showMenu();
}
});
//初始化tab菜单
mTabImageButton = new IconfontIndicatorTextView[4];
int index = 0;
//我的tab
mTabImageButton[index] = findViewById(R.id.myImageButton);
mTabImageButton[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean selected = mTabImageButton[0].isSelected();
if (!selected) {
mViewPager.setCurrentItem(0, true);
}
}
});
mTabImageButton[index++].setSelected(false);
//新歌
mTabImageButton[index] = findViewById(R.id.lastSongImageButton);
mTabImageButton[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean selected = mTabImageButton[1].isSelected();
if (!selected) {
mViewPager.setCurrentItem(1, true);
}
}
});
mTabImageButton[index++].setSelected(false);
//排行
mTabImageButton[index] = findViewById(R.id.recommendImageButton);
mTabImageButton[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean selected = mTabImageButton[2].isSelected();
if (!selected) {
mViewPager.setCurrentItem(2, true);
}
}
});
mTabImageButton[index++].setSelected(false);
//歌单
mTabImageButton[index] = findViewById(R.id.specialImageButton);
mTabImageButton[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean selected = mTabImageButton[3].isSelected();
if (!selected) {
mViewPager.setCurrentItem(3, true);
}
}
});
mTabImageButton[index++].setSelected(false);
//搜索
mSearchButton = findViewById(R.id.searchImageButton);
mSearchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SearchFragment searchFragment = SearchFragment.newInstance();
mSlidingMenuOnListener.addAndShowFragment(searchFragment);
}
});
mSearchButton.setConvert(true);
mSearchButton.setPressed(false);
mTabImageButton[mSelectedIndex].setSelected(true);
}
/**
* 初始化菜单栏
*/
private void initMenu() {
//工具
mToolLL = findViewById(R.id.tool_ll);
mToolLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ToolActivity.class);
startActivity(intent);
//去掉动画
overridePendingTransition(0, 0);
}
});
//更新歌曲
mUpdateMusic = findViewById(R.id.updateMusic);
mUpdateMusic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//1.扫描本地歌曲列表
Toast.makeText(getApplicationContext(), "正在更新歌曲,请耐心等待!", Toast.LENGTH_SHORT).show();
List<AudioInfo> audioInfos_db= AudioInfoDB.getLocalAudios(mContext);
for (int i = 0; i < audioInfos_db.size(); i++) {
AudioInfo temp = audioInfos_db.get(i);
try {
if(temp.IsOnlyMV())
{
File file = new File(temp.getMvPath());
if (!file.exists()) {
AudioInfoDB.deleteAudio(mContext, temp.getHash(), false);
}
}
else {
File file = new File(temp.getFilePath());
if (!file.exists()) {
AudioInfoDB.deleteAudio(mContext, temp.getHash(), false);
}
else
{
if(temp.getMvPath().length()>0) {
File file_mv = new File(temp.getMvPath());
if (!file_mv.exists()) { //如果歌曲存在但MV不存在
temp.setMvHash("");
temp.setMvPath("");
AudioInfoDB.updateVideo(mContext, temp);
}
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
}
//添加歌曲
List<AudioInfo> audioInfos = com.zlm.hp.util.MediaUtil.scanLocalMusic(getApplicationContext(), null);
if (audioInfos != null && audioInfos.size() > 0) {
AudioInfoDB.addAudioInfos2(getApplicationContext(), audioInfos);
}
//添加MV
List<AudioInfo> videoInfos = com.zlm.hp.util.MediaUtil.scanLocalMV(getApplicationContext(), null);
if (videoInfos != null && videoInfos.size() > 0) {
AudioInfoDB.addVideoInfos(getApplicationContext(), videoInfos);
}
AudioBroadcastReceiver.sendReceiver(getApplicationContext(), AudioBroadcastReceiver.ACTION_CODE_UPDATE_LOCAL);
Toast.makeText(getApplicationContext(), "歌曲更新完成。", Toast.LENGTH_SHORT).show();
//去掉动画
overridePendingTransition(0, 0);
}
});
mTimerTv = findViewById(R.id.timer_text);
//定时关闭
mTimerPowerOffLL = findViewById(R.id.timer_power_off_ll);
mTimerPowerOffLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, TimerPowerOffActivity.class);
startActivity(intent);
//去掉动画
overridePendingTransition(0, 0);
}
});
//设置
mSettingLL = findViewById(R.id.setting_ll);
mSettingLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SettingActivity.class);
startActivity(intent);
//去掉动画
overridePendingTransition(0, 0);
}
});
//退出
mExitLL = findViewById(R.id.exit_ll);
mExitLL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tipMsg = getString(R.string.exit_app_tip);
DialogUIUtils.showMdAlert(MainActivity.this, getString(R.string.tip_title), tipMsg, new DialogUIListener() {
@Override
public void onPositive() {
ActivityManager.getInstance().exit();
}
@Override
public void onNegative() {
}
}).setCancelable(true, false).show();
}
});
//wifi开关
mWifiLR = findViewById(R.id.wifi_lr);
mWifiLR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean flag = mWifiSwitchButton.isChecked();
mWifiSwitchButton.setChecked(!flag);
}
});
mWifiSwitchButton = findViewById(R.id.wifi_switch);
//桌面歌词开关
mDesktoplrcLR = findViewById(R.id.desktoplrc_lr);
mDesktoplrcLR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean flag = mDesktoplrcSwitchButton.isChecked();
mDesktoplrcSwitchButton.setChecked(!flag);
}
});
mDesktoplrcSwitchButton = findViewById(R.id.desktoplrc_switch);
//锁屏歌词开关
mLocklrcLR = findViewById(R.id.locklrc_lr);
mLocklrcLR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean flag = mLocklrcSwitchButton.isChecked();
mLocklrcSwitchButton.setChecked(!flag);
}
});
mLocklrcSwitchButton = findViewById(R.id.locklrc_switch);
}
/**
* 是否有显示桌面的权限
*
* @return
*/
private boolean hasShowFloatWindowPermission() {
if (!AppOpsUtils.allowFloatWindow(getApplication())) {
String tipMsg = getString(R.string.desktoplrc_tip);
DialogUIUtils.showMdAlert(MainActivity.this, getString(R.string.tip_title), tipMsg, new DialogUIListener() {
@Override
public void onPositive() {
//跳转权限设置页面
IntentUtil.gotoPermissionSetting(MainActivity.this);
mDesktoplrcSwitchButton.setChecked(false);
}
@Override
public void onNegative() {
mDesktoplrcSwitchButton.setChecked(false);
}
@Override
public void onCancle() {
mDesktoplrcSwitchButton.setChecked(false);
}
}).setCancelable(true, false).show();
return false;
}
return true;
}
/**
* 初始化底部bar视图
*/
private void initPlayBarViews() {
mArtistImageView = findViewById(R.id.play_bar_artist);
//
mSongNameTextView = findViewById(R.id.songName);
mSingerNameTextView = findViewById(R.id.singerName);
//播放
mPlayImageView = findViewById(R.id.bar_play);
mPlayImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).play(mMusicSeekBar.getProgress());
}
});
//暂停
mPauseImageView = findViewById(R.id.bar_pause);
mPauseImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).pause();
}
});
//下一首
mNextImageView = findViewById(R.id.bar_next);
mNextImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AudioPlayerManager.newInstance(mContext).next();
}
});
mMusicSeekBar = findViewById(R.id.seekBar);
mMusicSeekBar.setOnMusicListener(new MusicSeekBar.OnMusicListener() {
@Override
public String getTimeText() {
return MediaUtil.formatTime(mMusicSeekBar.getProgress());
}
@Override
public String getLrcText() {
return null;
}
@Override
public void onProgressChanged(MusicSeekBar musicSeekBar) {
}
@Override
public void onTrackingTouchStart(MusicSeekBar musicSeekBar) {
}
@Override
public void onTrackingTouchFinish(MusicSeekBar musicSeekBar) {
int progress = mMusicSeekBar.getProgress();
AudioInfo audioInfo = AudioPlayerManager.newInstance(mContext).getCurSong(mConfigInfo.getPlayHash());
if (audioInfo != null && progress <= audioInfo.getDuration()) {
audioInfo.setPlayProgress(progress);
AudioPlayerManager.newInstance(mContext).seekto(audioInfo);
}
}
});
//播放列表按钮
ImageView listMenuImg = findViewById(R.id.list_menu);
listMenuImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mIsShowPopPlayList) {
hidePopPlayListView();
} else {
if (mPopPlayListRL == null) {
initPopPlayListViews();
}
showPopPlayListView();
}
}
});
}
/**
* 初始化歌曲列表弹出窗口视图
*/
private void initPopPlayListViews() {
ViewStub stub = findViewById(R.id.viewstub_main_pop);
stub.inflate();
mPlayListRListView = findViewById(R.id.curplaylist_recyclerView);
//初始化内容视图
mPlayListRListView.setLayoutManager(new LinearLayoutManager(mContext));
mPlayListRListView.setPadding(0, 0, 0, getResources().getDimensionPixelSize(R.dimen.bar_height));
//全屏视图
mPopPlayListRL = findViewById(R.id.list_pop);
mPopPlayListRL.setVisibility(View.INVISIBLE);
mPopPlayListRL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hidePopPlayListView();
}
});
//内容布局
mPopPlayContentRL = findViewById(R.id.pop_content);
mPopListSizeTv = findViewById(R.id.list_size);
//播放模式
mModeAllTv = findViewById(R.id.modeAll);
mModeRandomTv = findViewById(R.id.modeRandom);
mModeSingleTv = findViewById(R.id.modeSingle);
mModeAllTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(1, mModeAllTv, mModeRandomTv, mModeSingleTv, true);
}
});
mModeRandomTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(3, mModeAllTv, mModeRandomTv, mModeSingleTv, true);
}
});
mModeSingleTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initPlayModeView(0, mModeAllTv, mModeRandomTv, mModeSingleTv, true);
}
});
}
/**
* 初始化播放列表播放模式
*
* @param playMode
* @param modeAllImg
* @param modeRandomImg
* @param modeSingleImg
*/
private void initPlayModeView(int playMode, IconfontTextView modeAllImg, IconfontTextView modeRandomImg, IconfontTextView modeSingleImg, boolean isTipShow) {
if (playMode == 0) {
if (isTipShow)
ToastUtil.showTextToast(mContext, getString(R.string.mode_all_text));
modeAllImg.setVisibility(View.VISIBLE);
modeRandomImg.setVisibility(View.INVISIBLE);
modeSingleImg.setVisibility(View.INVISIBLE);
} else if (playMode == 1) {
if (isTipShow)
ToastUtil.showTextToast(mContext, getString(R.string.mode_random_text));
modeAllImg.setVisibility(View.INVISIBLE);
modeRandomImg.setVisibility(View.VISIBLE);
modeSingleImg.setVisibility(View.INVISIBLE);
} else {
if (isTipShow)
ToastUtil.showTextToast(mContext, getString(R.string.mode_single_text));
modeAllImg.setVisibility(View.INVISIBLE);
modeRandomImg.setVisibility(View.INVISIBLE);
modeSingleImg.setVisibility(View.VISIBLE);
}
//保存
if (isTipShow)
mConfigInfo.setPlayModel(playMode);
}
/**
* 显示歌曲列表弹出窗口
*/
private void showPopPlayListView() {
//设置当前播放模式
initPlayModeView(mConfigInfo.getPlayModel(), mModeAllTv, mModeRandomTv, mModeSingleTv, false);
//设置当前歌曲数据
List<AudioInfo> audioInfoList = mConfigInfo.getAudioInfos();
mPopListSizeTv.setText(audioInfoList.size() + "");
mAdapter = new PopPlayListAdapter(mContext, audioInfoList, mUIHandler, mWorkerHandler);
mPlayListRListView.setAdapter(mAdapter);
//定位
int position = AudioPlayerManager.newInstance(mContext).getCurSongIndex(mConfigInfo.getAudioInfos(), mConfigInfo.getPlayHash());
if (position != -1) {
((LinearLayoutManager) mPlayListRListView.getLayoutManager()).scrollToPositionWithOffset(position, 0);
}
/**
* 如果该界面还没初始化,则监听
*/
if (mPopPlayContentRL.getHeight() == 0) {
mPopPlayContentRL.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mPopPlayContentRL.getViewTreeObserver().removeOnGlobalLayoutListener(this);
showPopPlayListViewAnimation();
}
});
} else {
showPopPlayListViewAnimation();
}
}
/**
* 显示动画
*/
private void showPopPlayListViewAnimation() {
mPopPlayListRL.setVisibility(View.VISIBLE);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, mPopPlayContentRL.getHeight(), 0);
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
mIsShowPopPlayList = true;
}
@Override
public void onAnimationEnd(Animation animation) {
mPopPlayListRL.setBackgroundColor(ColorUtil.parserColor(Color.BLACK, 120));
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mPopPlayContentRL.clearAnimation();
mPopPlayContentRL.startAnimation(translateAnimation);
}
/**
* 隐藏歌曲列表弹出窗口
*/
private void hidePopPlayListView() {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, mPopPlayContentRL.getHeight());
translateAnimation.setDuration(250);//设置动画持续时间
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mIsShowPopPlayList = false;
mPopPlayListRL.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mPopPlayContentRL.clearAnimation();
mPopPlayContentRL.startAnimation(translateAnimation);
}
@Override
public void onBackPressed() {
if (mIsShowPopPlayList) {
hidePopPlayListView();
} else if (mSlidingMenuLayout.isShowingFragment()) {
mSlidingMenuLayout.hideFragment();
} else if (mSlidingMenuLayout.isShowingMenu()) {
mSlidingMenuLayout.hideMenu();
} else {
if ((System.currentTimeMillis() - mExitTime) > 2000) {
ToastUtil.showTextToast(getApplicationContext(), getString(R.string.back_tip));
mExitTime = System.currentTimeMillis();
} else {
// 跳转到桌面
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
}
}
@Override
protected void onDestroy() {
releaseData();
destroyService();
destroyReceiver();
super.onDestroy();
}
/**
* 销毁服务
*/
private void destroyService() {
AudioPlayerService.stopService(this);
}
/**
* 释放数据
*/
private void releaseData() {
ImageUtil.release();
DownloadAudioManager.newInstance(mContext).release();
AudioPlayerManager.newInstance(mContext).release();
ToastUtil.release();
}
/**
* 销毁广播
*/
private void destroyReceiver() {
if (mFragmentReceiver != null) {
mFragmentReceiver.unregisterReceiver(mContext);
}
if (mAudioBroadcastReceiver != null) {
mAudioBroadcastReceiver.unregisterReceiver(mContext);
}
if (mAppSystemReceiver != null) {
mAppSystemReceiver.unregisterReceiver(mContext);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (mPhoneReceiver != null) {
mPhoneReceiver.unregisterReceiver(mContext);
}
} else {
if (mPhoneV4Receiver != null) {
mPhoneV4Receiver.unregisterReceiver(mContext);
}
}
}
}