version:3.8

fix:修复报错
update:优化闹钟响铃
This commit is contained in:
2022-09-22 10:18:52 +08:00
parent d09d5022cf
commit 56a9a019ce
15 changed files with 359 additions and 52 deletions

View File

@@ -16,8 +16,8 @@ android {
applicationId "com.uiui.aios"
minSdkVersion 24
targetSdkVersion 29
versionCode 26
versionName "3.5"
versionCode 29
versionName "3.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -4,6 +4,8 @@
package="com.uiui.aios"
android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 清单文件中, 申明监听通话精确状态权限该权限需要android:sharedUserId="android.uid.system" -->
<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
@@ -11,6 +13,9 @@
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- 允许访问网络,必选权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许获取精确位置,精准定位必选 -->

View File

@@ -3,9 +3,13 @@ package com.uiui.aios.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.Vibrator;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -25,6 +29,7 @@ import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.utils.FileUtil;
import com.uiui.aios.utils.ScreenUtils;
import com.uiui.aios.utils.Utils;
import com.uiui.aios.utils.WakeUpUtils;
import com.uiui.aios.view.JzvdStdAssert;
import java.io.File;
@@ -36,6 +41,7 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import cn.jzvd.JZDataSource;
import cn.jzvd.Jzvd;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
@@ -60,6 +66,11 @@ public class NoticeActivity extends AppCompatActivity {
private AlarmClockData alarmClockData;
private int code;
private MediaPlayer mediaPlayer;
private PowerManager pm;
private PowerManager.WakeLock wakeLock;
private AudioManager audioManager;
private Vibrator vibrator;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -68,9 +79,16 @@ public class NoticeActivity extends AppCompatActivity {
ButterKnife.bind(this);
Intent intent = getIntent();
code = intent.getIntExtra("id", -1);
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock");
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (code == -1) {
finish();
} else {
wakeLock.acquire(60 * 1000L);
long[] pattern = {1000, 5000, 1000, 5000};
vibrator.vibrate(pattern, 0);
WakeUpUtils.wakeUpAndUnlockScreen(this);
HashMap<Integer, AlarmClockData> oldData = AlarmUtils.getInstance().getOldData();
alarmClockData = oldData.get(code);
if (alarmClockData == null) {
@@ -83,6 +101,9 @@ public class NoticeActivity extends AppCompatActivity {
}
private void showData(AlarmClockData alarmClockData) {
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, AudioManager.FLAG_PLAY_SOUND);
tv_title.setText(alarmClockData.getTitle());
bt_ok.setOnClickListener(new View.OnClickListener() {
@Override
@@ -165,7 +186,9 @@ public class NoticeActivity extends AppCompatActivity {
} else if (FileUtil.isVideoFile(fileType)) {
jz_video.setVisibility(View.VISIBLE);
imageView.setVisibility(View.GONE);
jz_video.setUp(filePath, "");
JZDataSource jzDataSource = new JZDataSource(filePath, "");
jzDataSource.looping = true;
jz_video.setUp(jzDataSource, Jzvd.SCREEN_NORMAL);
jz_video.startVideo();
}
} else {

View File

@@ -1,5 +1,10 @@
package com.uiui.aios.activity.alarm;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
@@ -11,6 +16,7 @@ import com.uiui.aios.adapter.AlarmAdapter;
import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.base.BaseActivity;
import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.tpush.MessageReceiver;
import com.uiui.aios.utils.ToastUtil;
import java.util.List;
@@ -20,6 +26,7 @@ import butterknife.ButterKnife;
import cn.jzvd.Jzvd;
public class AlarmClockActivity extends BaseActivity implements AlarmClockContact.ClockView {
private static final String TAG = AlarmClockActivity.class.getSimpleName();
@BindView(R.id.recyclerView)
RecyclerView recyclerView;
@@ -55,12 +62,12 @@ public class AlarmClockActivity extends BaseActivity implements AlarmClockContac
@Override
public void initData() {
registerAlarmClockReceiver();
mPresenter.getAlarmClock();
}
@Override
public void showAlarmClock(List<AlarmClockData> alarmClockData) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockData);
mAlarmAdapter.setAlarmClockData(alarmClockData);
}
@@ -78,5 +85,32 @@ public class AlarmClockActivity extends BaseActivity implements AlarmClockContac
protected void onDestroy() {
super.onDestroy();
Jzvd.releaseAllVideos();
if (mAlarmClockReceiver != null) {
unregisterReceiver(mAlarmClockReceiver);
}
}
private void registerAlarmClockReceiver() {
if (null == mAlarmClockReceiver) {
mAlarmClockReceiver = new AlarmClockReceiver();
}
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MessageReceiver.SET_ALARMCLOCK);
registerReceiver(mAlarmClockReceiver, filter);
}
private AlarmClockReceiver mAlarmClockReceiver;
private class AlarmClockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (MessageReceiver.SET_ALARMCLOCK.equals(action)) {
mPresenter.getAlarmClock();
}
}
}
}

View File

@@ -584,7 +584,9 @@ public class AlarmUtils {
timestamp += (8 - day_of_week) * AlarmManager.INTERVAL_DAY;
break;
default:
timestamp += (6 - day_of_week) * AlarmManager.INTERVAL_DAY;
if (System.currentTimeMillis() > timestamp) {
timestamp += AlarmManager.INTERVAL_DAY;
}
break;
}
Intent intent = new Intent(action);

View File

@@ -176,7 +176,7 @@ public class BaseFragmentPagerAdapter extends FragmentPagerAdapter {
private void removeFragmentInternal(Fragment fragment) {
FragmentTransaction transaction = mFragmentManager.beginTransaction();
transaction.remove(fragment);
transaction.commitNow();
transaction.commitAllowingStateLoss();
}
/**

View File

@@ -19,6 +19,7 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Handler;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -59,6 +60,7 @@ import com.uiui.aios.dialog.SingleDialog;
import com.uiui.aios.manager.AmapManager;
import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.network.NetInterfaceManager;
import com.uiui.aios.tpush.MessageReceiver;
import com.uiui.aios.utils.ApkUtils;
import com.uiui.aios.utils.AppUtil;
import com.uiui.aios.utils.NetStateUtils;
@@ -191,8 +193,6 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
mParam2 = getArguments().getString(ARG_PARAM2);
}
mmkv = MMKV.defaultMMKV();
registerBatteryReceiver();
getActivity().registerReceiver(mbatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
@@ -211,7 +211,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
}
private String getConnectWifiSsid() {
WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
Log.d("wifiInfo", wifiInfo.toString());
Log.d("SSID", wifiInfo.getSSID());
@@ -224,11 +224,39 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
* @return
*/
public boolean isWifiConnect() {
ConnectivityManager connManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifiInfo.isConnected();
}
private void registerAlarmClockReceiver() {
if (null == mAlarmClockReceiver) {
mAlarmClockReceiver = new AlarmClockReceiver();
}
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MessageReceiver.SET_ALARMCLOCK);
mContext.registerReceiver(mAlarmClockReceiver, filter);
}
private AlarmClockReceiver mAlarmClockReceiver;
private class AlarmClockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (MessageReceiver.SET_ALARMCLOCK.equals(action)) {
Handler.getMain().postDelayed(new Runnable() {
@Override
public void run() {
getAlarmClock();
}
}, 3456);
}
}
}
private void registerBatteryReceiver() {
if (null == batteryReceiver) {
batteryReceiver = new BatteryReceiver();
@@ -240,10 +268,10 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
filter.addAction(Intent.ACTION_BATTERY_OKAY);
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
getActivity().registerReceiver(batteryReceiver, filter);
mContext.registerReceiver(batteryReceiver, filter);
}
BatteryReceiver batteryReceiver;
private BatteryReceiver batteryReceiver;
private class BatteryReceiver extends BroadcastReceiver {
@@ -302,8 +330,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
}
private void initView() {
Log.e(TAG, "initView: " + Utils.getBatteryLevel(getActivity()));
// tv_battery.setText(Utils.getBatteryLevel(getActivity()) + "%");
Log.e(TAG, "initView: " + Utils.getBatteryLevel(mContext));
registerBatteryReceiver();
registerAlarmClockReceiver();
mContext.registerReceiver(mbatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// tv_battery.setText(Utils.getBatteryLevel(mContext) + "%");
// cpv.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
@@ -313,7 +345,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
// cl_alarm.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// ApkUtils.openPackage(getActivity(), "com.alarmclock.uiui");
// ApkUtils.openPackage(mContext, "com.alarmclock.uiui");
// }
// });
cl_note.setOnClickListener(new View.OnClickListener() {
@@ -335,7 +367,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
getAlarm();
}
});
rv_noti.setLayoutManager(new LinearLayoutManager(getActivity()));
rv_noti.setLayoutManager(new LinearLayoutManager(mContext));
rv_noti.setAdapter(notificationAdapter);
if (isWifiConnect()) {
// wifi_ssid.setText(getConnectWifiSsid());
@@ -343,10 +375,10 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
// wifi_ssid.setText("WiFi未连接");
}
// alarmClockAdapter = new AlarmClockAdapter();
// rv_clock.setLayoutManager(new LinearLayoutManager(getActivity()));
// rv_clock.setLayoutManager(new LinearLayoutManager(mContext));
// rv_clock.setAdapter(alarmClockAdapter);
sosNnmberAdapter = new SOSNnmberAdapter();
rv_sos.setLayoutManager(new LinearLayoutManager(getActivity()));
rv_sos.setLayoutManager(new LinearLayoutManager(mContext));
rv_sos.setAdapter(sosNnmberAdapter);
cl_soso.setOnClickListener(new View.OnClickListener() {
@Override
@@ -357,7 +389,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
cl_weather.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getActivity(), WeatherActivity.class));
startActivity(new Intent(mContext, WeatherActivity.class));
}
});
// cl_battery.setOnClickListener(new View.OnClickListener() {
@@ -375,13 +407,13 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
@Override
public void onClick(View v) {
getHealthCode();
// SchemeUtils.openScheme(getActivity(), SchemeUtils.SCHEME_TONGUE);
// SchemeUtils.openScheme(mContext, SchemeUtils.SCHEME_TONGUE);
}
});
mClTongue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// startActivity(new Intent(getActivity(), CodeActivity.class));
// startActivity(new Intent(mContext, CodeActivity.class));
// startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面
openScheme(SchemeUtils.SCHEME_TONGUE);
}
@@ -389,15 +421,15 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
mClFace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// startActivity(new Intent(getActivity(), CodeActivity.class));
// startActivity(new Intent(mContext, CodeActivity.class));
openScheme(SchemeUtils.SCHEME_FACE);
}
});
mClHand.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// startActivity(new Intent(getActivity(), CodeActivity.class));
// getActivity().startActivity(new Intent(getActivity(), APPListActivity.class));
// startActivity(new Intent(mContext, CodeActivity.class));
// mContext.startActivity(new Intent(mContext, APPListActivity.class));
openScheme(SchemeUtils.SCHEME_HAND);
}
});
@@ -410,7 +442,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() {
@Override
public void setSosNumber(String json) {
Intent intent = new Intent(getActivity(), EmergencyActivity.class);
Intent intent = new Intent(mContext, EmergencyActivity.class);
// intent.putExtra("setting_sos", phone);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
@@ -472,7 +504,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
}
});
initAmap();
getAlarmClock();
// getAlarmClock();
}
@Override
@@ -520,7 +552,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
dialog.setMessage("绑定手机才能使用");
dialog.show();
} else {
SchemeUtils.openScheme(getActivity(), uri);
SchemeUtils.openScheme(mContext, uri);
}
}
});
@@ -664,7 +696,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
* @param unit (选填)单位选择公制m或英制i默认为公制单位
* @param listener 网络访问结果回调
*/
QWeather.getWeatherNow(getActivity(), location, Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() {
QWeather.getWeatherNow(mContext, location, Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() {
@Override
public void onError(Throwable e) {
Log.e("getWeatherNow", "onError: " + e);
@@ -677,8 +709,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
if (Code.OK == weatherBean.getCode()) {
WeatherNowBean.NowBaseBean now = weatherBean.getNow();
// String imageName = "he" + now.getIcon();
// int resId = getResources().getIdentifier(imageName, "drawable", getActivity().getPackageName());
// iv_pic.setImageDrawable(getActivity().getDrawable(resId));
// int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
// iv_pic.setImageDrawable(mContext.getDrawable(resId));
tv_temp.setText(now.getTemp() + "");
} else {
//在此查看返回数据失败的原因
@@ -688,7 +720,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
}
});
QWeather.getWeather24Hourly(getActivity(), location, new QWeather.OnResultWeatherHourlyListener() {
QWeather.getWeather24Hourly(mContext, location, new QWeather.OnResultWeatherHourlyListener() {
@Override
public void onError(Throwable throwable) {
Log.e("getWeather24Hourly", "onError: " + throwable);
@@ -704,12 +736,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
String imageName = "he" + now.getIcon();
Log.e(TAG, "onSuccess: " + imageName);
if (isAdded()) {
int resId = getResources().getIdentifier(imageName, "drawable", getActivity().getPackageName());
int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
Log.e(TAG, "onSuccess: " + resId);
if (resId == 0) {
iv_pic.setImageDrawable(getActivity().getDrawable(R.drawable.he100));
iv_pic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
} else {
iv_pic.setImageDrawable(getActivity().getDrawable(resId));
iv_pic.setImageDrawable(mContext.getDrawable(resId));
}
tv_temp.setText(now.getTemp() + "");
}
@@ -764,10 +796,13 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
super.onDestroy();
NetworkUtils.unregisterNetworkStatusChangedListener(this);
if (batteryReceiver != null) {
getActivity().unregisterReceiver(batteryReceiver);
mContext.unregisterReceiver(batteryReceiver);
}
if (mbatteryReceiver != null) {
getActivity().unregisterReceiver(mbatteryReceiver);
mContext.unregisterReceiver(mbatteryReceiver);
}
if (mAlarmClockReceiver != null) {
mContext.unregisterReceiver(mAlarmClockReceiver);
}
}
}

View File

@@ -262,16 +262,19 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo
private void setActivity(ActivityBean activity) {
Glide.with(iv_avatar_a).load(activity.getAvatar()).error(getResources().getDrawable(R.drawable.default_head)).into(iv_avatar_a);
tv_title_a.setText(activity.getTitle());
tv_title_a.setText(activity.getName());
tc_joined_num_a.setText(activity.getJoin_num() + "人参加");
tv_time_a.setText(getTime(activity.getActivity_time()));
tv_time_a.setText(getTime(activity.getAdd_time()));
tv_address_a.setText(activity.getAddress());
}
private String getTime(long second) {
long ms = second * 1000L;
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
Date date = new Date(second * 1000);
return sdf.format(date);
Date date = new Date(ms);
String time = sdf.format(date);
Log.e(TAG, "getTime: " + time);
return time;
}
private void initView() {

View File

@@ -11,6 +11,7 @@ import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.bean.ActivityBean;
import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.bean.ArticleInfo;
@@ -713,12 +714,17 @@ public class NetInterfaceManager {
if (listBaseResponse.code == 200) {
List<AlarmClockData> alarmClockData = listBaseResponse.data;
if (alarmClockData != null && alarmClockData.size() != 0) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockData);
if (callback != null) callback.setAlarmClock(alarmClockData);
} else {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
if (callback != null) callback.setAlarmClockEmpty();
}
mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, GsonUtils.toJsonString(alarmClockData));
} else {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, "");
if (callback != null) callback.setAlarmClockEmpty();
}

View File

@@ -60,18 +60,17 @@ public class MainSPresenter implements MainSContact.Presenter {
NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
@Override
public void setAlarmClock(List<AlarmClockData> alarmClockList) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockList);
Log.e(TAG, "setAlarmClock: " + alarmClockList);
}
@Override
public void setAlarmClockEmpty() {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
Log.e(TAG, "setAlarmClock: ");
}
@Override
public void onError() {
Log.e(TAG, "setAlarmClock: ");
}
});

View File

@@ -16,8 +16,10 @@ import com.tencent.android.tpush.XGPushClickedResult;
import com.tencent.android.tpush.XGPushRegisterResult;
import com.tencent.android.tpush.XGPushShowedResult;
import com.tencent.android.tpush.XGPushTextMessage;
import com.uiui.aios.service.main.MainService;
import com.uiui.aios.tpush.common.NotificationService;
import com.uiui.aios.tpush.po.XGNotification;
import com.uiui.aios.utils.ToastUtil;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@@ -29,6 +31,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
public static final String TEST_ACTION = "com.qq.xgdemo.activity.TEST_ACTION";
public static final String LogTag = "xg.test";
public static final String SET_ALARMCLOCK = "zuoyeos.action.change.alarmclaock";
private Context mContext;
private ContentResolver mResolver;
@@ -286,9 +289,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
// Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
private int changeNum(int paramInt) {
return paramInt == 0 ? 1 : 0;
}
//闹钟
private static final String JIGUANG_ALARM_CLOCK = "57";
private void processCustomMessage(Context context, XGPushTextMessage message) {
if (context == null || message == null) {
@@ -305,9 +307,12 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
switch (title) {
case JIGUANG_ALARM_CLOCK:
ToastUtil.betaShow("收到推送消息: 设置闹钟");
Intent intent = new Intent(SET_ALARMCLOCK);
mContext.sendBroadcast(intent);
break;
default:
}
}
}

View File

@@ -51,6 +51,7 @@ public class ApkUtils {
this.add("com.android.calendar");
this.add("com.android.uiuios");
this.add("com.uiui.os");
this.add("com.uiui.health");
}};
private static HashSet<String> showPackageName = new HashSet<String>() {{
this.add("com.android.dialer");

View File

@@ -0,0 +1,78 @@
package com.uiui.aios.utils;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import android.widget.ImageView;
import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
/**
* Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常
* Created by Li_Xavier on 2017/6/20 0020.
*/
public class GlideLoadUtils {
private String TAG = "ImageLoader";
/**
* 借助内部类 实现线程安全的单例模式
* 属于懒汉式单例因为Java机制规定内部类SingletonHolder只有在getInstance()
* 方法第一次调用的时候才会被加载实现了lazy而且其加载过程是线程安全的。
* 内部类加载的时候实例化一次instance。
*/
public GlideLoadUtils() {
}
private static class GlideLoadUtilsHolder {
private final static GlideLoadUtils INSTANCE = new GlideLoadUtils();
}
public static GlideLoadUtils getInstance() {
return GlideLoadUtilsHolder.INSTANCE;
}
/**
* Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常
*
* @param context
* @param url 加载图片的url地址 String
* @param imageView 加载图片的ImageView 控件
* @param default_image 图片展示错误的本地图片 id
*/
public void glideLoad(Context context, String url, ImageView imageView, int default_image) {
if (context != null) {
Glide.with(context).load(url).centerCrop().error(default_image).into(imageView);
} else {
Log.i(TAG, "Picture loading failed,context is null");
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public void glideLoad(Activity activity, String url, ImageView imageView, int default_image) {
if (!activity.isDestroyed()) {
Glide.with(activity).load(url).centerCrop().error(default_image).into(imageView);
} else {
Log.i(TAG, "Picture loading failed,activity is Destroyed");
}
}
public void glideLoad(Fragment fragment, String url, ImageView imageView, int default_image) {
if (fragment != null && fragment.getActivity() != null) {
Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView);
} else {
Log.i(TAG, "Picture loading failed,fragment is null");
}
}
public void glideLoad(android.app.Fragment fragment, String url, ImageView imageView, int default_image) {
if (fragment != null && fragment.getActivity() != null) {
Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView);
} else {
Log.i(TAG, "Picture loading failed,android.app.Fragment is null");
}
}
}

View File

@@ -0,0 +1,119 @@
package com.uiui.aios.utils;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.KeyguardManager;
import android.content.Context;
import android.os.Build;
import android.os.PowerManager;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.RequiresApi;
public class WakeUpUtils {
/**
* 唤醒手机屏幕并解锁
*/
public static void wakeUpAndUnlock(Activity activity) {
// 获取电源管理器对象
PowerManager pm = (PowerManager) activity.getApplicationContext()
.getSystemService(Context.POWER_SERVICE);
boolean screenOn = pm.isScreenOn();
Log.d("WakeScreen0", "screenOn: " + screenOn);
if (!screenOn) {
// 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
@SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wl = pm.newWakeLock(
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
wl.acquire(10000); // 点亮屏幕
wl.release(); // 释放
}
// 屏幕解锁
KeyguardManager keyguardManager = (KeyguardManager) activity.getApplicationContext()
.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("unLock");
// 屏幕锁定
// keyguardLock.reenableKeyguard();
keyguardLock.disableKeyguard(); // 解锁
unLockScreen(activity);
}
private static void unLockScreen(Activity activity) {
final Window win = activity.getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
}
/**
* 唤醒手机屏幕并解锁
*/
@RequiresApi(api = Build.VERSION_CODES.O)
public static void wakeUpAndUnlockScreen(Activity activity) {
Window win = activity.getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
PowerManager pm = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
@SuppressLint("InvalidWakeLockTag")
PowerManager.WakeLock wakelock = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, "xx");
wakelock.acquire();
wakelock.release();
KeyguardManager keyguardManager = (KeyguardManager) activity.getApplicationContext()
.getSystemService(Context.KEYGUARD_SERVICE);
if (activity == null) return;
keyguardManager.requestDismissKeyguard(activity, new KeyguardManager.KeyguardDismissCallback() {
@Override
public void onDismissError() {
super.onDismissError();
Log.d("xxx-->", "1 onDismissError");
}
@Override
public void onDismissSucceeded() {
super.onDismissSucceeded();
Log.d("xxx-->", "1 onDismissSucceeded");
}
@Override
public void onDismissCancelled() {
super.onDismissCancelled();
Log.d("xxx-->", "1 onDismissCancelled");
}
});
if (activity == null) return;
keyguardManager.requestDismissKeyguard(activity, new KeyguardManager.KeyguardDismissCallback() {
@Override
public void onDismissError() {
super.onDismissError();
Log.d("xxx-->", "2 onDismissError");
}
@Override
public void onDismissSucceeded() {
super.onDismissSucceeded();
Log.d("xxx-->", "2 onDismissSucceeded");
}
@Override
public void onDismissCancelled() {
super.onDismissCancelled();
Log.d("xxx-->", "2 onDismissCancelled");
}
});
}
}

View File

@@ -36,7 +36,6 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
@@ -50,7 +49,5 @@
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>