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" applicationId "com.uiui.aios"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 29 targetSdkVersion 29
versionCode 26 versionCode 29
versionName "3.5" versionName "3.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -4,6 +4,8 @@
package="com.uiui.aios" package="com.uiui.aios"
android:sharedUserId="android.uid.system"> android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 清单文件中, 申明监听通话精确状态权限该权限需要android:sharedUserId="android.uid.system" --> <!-- 清单文件中, 申明监听通话精确状态权限该权限需要android:sharedUserId="android.uid.system" -->
<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" /> <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.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <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.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" /> <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.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.os.Bundle; import android.os.Bundle;
import android.os.PowerManager;
import android.os.Vibrator;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; 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.FileUtil;
import com.uiui.aios.utils.ScreenUtils; import com.uiui.aios.utils.ScreenUtils;
import com.uiui.aios.utils.Utils; import com.uiui.aios.utils.Utils;
import com.uiui.aios.utils.WakeUpUtils;
import com.uiui.aios.view.JzvdStdAssert; import com.uiui.aios.view.JzvdStdAssert;
import java.io.File; import java.io.File;
@@ -36,6 +41,7 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import cn.jzvd.JZDataSource;
import cn.jzvd.Jzvd; import cn.jzvd.Jzvd;
import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.core.Observer;
@@ -60,6 +66,11 @@ public class NoticeActivity extends AppCompatActivity {
private AlarmClockData alarmClockData; private AlarmClockData alarmClockData;
private int code; private int code;
private MediaPlayer mediaPlayer; private MediaPlayer mediaPlayer;
private PowerManager pm;
private PowerManager.WakeLock wakeLock;
private AudioManager audioManager;
private Vibrator vibrator;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -68,9 +79,16 @@ public class NoticeActivity extends AppCompatActivity {
ButterKnife.bind(this); ButterKnife.bind(this);
Intent intent = getIntent(); Intent intent = getIntent();
code = intent.getIntExtra("id", -1); 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) { if (code == -1) {
finish(); finish();
} else { } 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(); HashMap<Integer, AlarmClockData> oldData = AlarmUtils.getInstance().getOldData();
alarmClockData = oldData.get(code); alarmClockData = oldData.get(code);
if (alarmClockData == null) { if (alarmClockData == null) {
@@ -83,6 +101,9 @@ public class NoticeActivity extends AppCompatActivity {
} }
private void showData(AlarmClockData alarmClockData) { 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()); tv_title.setText(alarmClockData.getTitle());
bt_ok.setOnClickListener(new View.OnClickListener() { bt_ok.setOnClickListener(new View.OnClickListener() {
@Override @Override
@@ -165,7 +186,9 @@ public class NoticeActivity extends AppCompatActivity {
} else if (FileUtil.isVideoFile(fileType)) { } else if (FileUtil.isVideoFile(fileType)) {
jz_video.setVisibility(View.VISIBLE); jz_video.setVisibility(View.VISIBLE);
imageView.setVisibility(View.GONE); 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(); jz_video.startVideo();
} }
} else { } else {

View File

@@ -1,5 +1,10 @@
package com.uiui.aios.activity.alarm; 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.view.View;
import android.widget.ImageView; import android.widget.ImageView;
@@ -11,6 +16,7 @@ import com.uiui.aios.adapter.AlarmAdapter;
import com.uiui.aios.alarm.AlarmUtils; import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.base.BaseActivity; import com.uiui.aios.base.BaseActivity;
import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.tpush.MessageReceiver;
import com.uiui.aios.utils.ToastUtil; import com.uiui.aios.utils.ToastUtil;
import java.util.List; import java.util.List;
@@ -20,6 +26,7 @@ import butterknife.ButterKnife;
import cn.jzvd.Jzvd; import cn.jzvd.Jzvd;
public class AlarmClockActivity extends BaseActivity implements AlarmClockContact.ClockView { public class AlarmClockActivity extends BaseActivity implements AlarmClockContact.ClockView {
private static final String TAG = AlarmClockActivity.class.getSimpleName();
@BindView(R.id.recyclerView) @BindView(R.id.recyclerView)
RecyclerView recyclerView; RecyclerView recyclerView;
@@ -55,12 +62,12 @@ public class AlarmClockActivity extends BaseActivity implements AlarmClockContac
@Override @Override
public void initData() { public void initData() {
registerAlarmClockReceiver();
mPresenter.getAlarmClock(); mPresenter.getAlarmClock();
} }
@Override @Override
public void showAlarmClock(List<AlarmClockData> alarmClockData) { public void showAlarmClock(List<AlarmClockData> alarmClockData) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockData);
mAlarmAdapter.setAlarmClockData(alarmClockData); mAlarmAdapter.setAlarmClockData(alarmClockData);
} }
@@ -78,5 +85,32 @@ public class AlarmClockActivity extends BaseActivity implements AlarmClockContac
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
Jzvd.releaseAllVideos(); 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; timestamp += (8 - day_of_week) * AlarmManager.INTERVAL_DAY;
break; break;
default: default:
timestamp += (6 - day_of_week) * AlarmManager.INTERVAL_DAY; if (System.currentTimeMillis() > timestamp) {
timestamp += AlarmManager.INTERVAL_DAY;
}
break; break;
} }
Intent intent = new Intent(action); Intent intent = new Intent(action);

View File

@@ -176,7 +176,7 @@ public class BaseFragmentPagerAdapter extends FragmentPagerAdapter {
private void removeFragmentInternal(Fragment fragment) { private void removeFragmentInternal(Fragment fragment) {
FragmentTransaction transaction = mFragmentManager.beginTransaction(); FragmentTransaction transaction = mFragmentManager.beginTransaction();
transaction.remove(fragment); 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.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -59,6 +60,7 @@ import com.uiui.aios.dialog.SingleDialog;
import com.uiui.aios.manager.AmapManager; import com.uiui.aios.manager.AmapManager;
import com.uiui.aios.alarm.AlarmUtils; import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.network.NetInterfaceManager;
import com.uiui.aios.tpush.MessageReceiver;
import com.uiui.aios.utils.ApkUtils; import com.uiui.aios.utils.ApkUtils;
import com.uiui.aios.utils.AppUtil; import com.uiui.aios.utils.AppUtil;
import com.uiui.aios.utils.NetStateUtils; import com.uiui.aios.utils.NetStateUtils;
@@ -191,8 +193,6 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
mParam2 = getArguments().getString(ARG_PARAM2); mParam2 = getArguments().getString(ARG_PARAM2);
} }
mmkv = MMKV.defaultMMKV(); 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() { private String getConnectWifiSsid() {
WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE); WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo(); WifiInfo wifiInfo = wifiManager.getConnectionInfo();
Log.d("wifiInfo", wifiInfo.toString()); Log.d("wifiInfo", wifiInfo.toString());
Log.d("SSID", wifiInfo.getSSID()); Log.d("SSID", wifiInfo.getSSID());
@@ -224,11 +224,39 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
* @return * @return
*/ */
public boolean isWifiConnect() { 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); NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifiInfo.isConnected(); 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() { private void registerBatteryReceiver() {
if (null == batteryReceiver) { if (null == batteryReceiver) {
batteryReceiver = new 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_BATTERY_OKAY);
filter.addAction(Intent.ACTION_POWER_CONNECTED); filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED); filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
getActivity().registerReceiver(batteryReceiver, filter); mContext.registerReceiver(batteryReceiver, filter);
} }
BatteryReceiver batteryReceiver; private BatteryReceiver batteryReceiver;
private class BatteryReceiver extends BroadcastReceiver { private class BatteryReceiver extends BroadcastReceiver {
@@ -302,8 +330,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
} }
private void initView() { private void initView() {
Log.e(TAG, "initView: " + Utils.getBatteryLevel(getActivity())); Log.e(TAG, "initView: " + Utils.getBatteryLevel(mContext));
// tv_battery.setText(Utils.getBatteryLevel(getActivity()) + "%"); registerBatteryReceiver();
registerAlarmClockReceiver();
mContext.registerReceiver(mbatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// tv_battery.setText(Utils.getBatteryLevel(mContext) + "%");
// cpv.setOnClickListener(new View.OnClickListener() { // cpv.setOnClickListener(new View.OnClickListener() {
// @Override // @Override
// public void onClick(View v) { // public void onClick(View v) {
@@ -313,7 +345,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
// cl_alarm.setOnClickListener(new View.OnClickListener() { // cl_alarm.setOnClickListener(new View.OnClickListener() {
// @Override // @Override
// public void onClick(View v) { // public void onClick(View v) {
// ApkUtils.openPackage(getActivity(), "com.alarmclock.uiui"); // ApkUtils.openPackage(mContext, "com.alarmclock.uiui");
// } // }
// }); // });
cl_note.setOnClickListener(new View.OnClickListener() { cl_note.setOnClickListener(new View.OnClickListener() {
@@ -335,7 +367,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
getAlarm(); getAlarm();
} }
}); });
rv_noti.setLayoutManager(new LinearLayoutManager(getActivity())); rv_noti.setLayoutManager(new LinearLayoutManager(mContext));
rv_noti.setAdapter(notificationAdapter); rv_noti.setAdapter(notificationAdapter);
if (isWifiConnect()) { if (isWifiConnect()) {
// wifi_ssid.setText(getConnectWifiSsid()); // wifi_ssid.setText(getConnectWifiSsid());
@@ -343,10 +375,10 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
// wifi_ssid.setText("WiFi未连接"); // wifi_ssid.setText("WiFi未连接");
} }
// alarmClockAdapter = new AlarmClockAdapter(); // alarmClockAdapter = new AlarmClockAdapter();
// rv_clock.setLayoutManager(new LinearLayoutManager(getActivity())); // rv_clock.setLayoutManager(new LinearLayoutManager(mContext));
// rv_clock.setAdapter(alarmClockAdapter); // rv_clock.setAdapter(alarmClockAdapter);
sosNnmberAdapter = new SOSNnmberAdapter(); sosNnmberAdapter = new SOSNnmberAdapter();
rv_sos.setLayoutManager(new LinearLayoutManager(getActivity())); rv_sos.setLayoutManager(new LinearLayoutManager(mContext));
rv_sos.setAdapter(sosNnmberAdapter); rv_sos.setAdapter(sosNnmberAdapter);
cl_soso.setOnClickListener(new View.OnClickListener() { cl_soso.setOnClickListener(new View.OnClickListener() {
@Override @Override
@@ -357,7 +389,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
cl_weather.setOnClickListener(new View.OnClickListener() { cl_weather.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
startActivity(new Intent(getActivity(), WeatherActivity.class)); startActivity(new Intent(mContext, WeatherActivity.class));
} }
}); });
// cl_battery.setOnClickListener(new View.OnClickListener() { // cl_battery.setOnClickListener(new View.OnClickListener() {
@@ -375,13 +407,13 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
@Override @Override
public void onClick(View v) { public void onClick(View v) {
getHealthCode(); getHealthCode();
// SchemeUtils.openScheme(getActivity(), SchemeUtils.SCHEME_TONGUE); // SchemeUtils.openScheme(mContext, SchemeUtils.SCHEME_TONGUE);
} }
}); });
mClTongue.setOnClickListener(new View.OnClickListener() { mClTongue.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { 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网络设置界面 // startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面
openScheme(SchemeUtils.SCHEME_TONGUE); openScheme(SchemeUtils.SCHEME_TONGUE);
} }
@@ -389,15 +421,15 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
mClFace.setOnClickListener(new View.OnClickListener() { mClFace.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
// startActivity(new Intent(getActivity(), CodeActivity.class)); // startActivity(new Intent(mContext, CodeActivity.class));
openScheme(SchemeUtils.SCHEME_FACE); openScheme(SchemeUtils.SCHEME_FACE);
} }
}); });
mClHand.setOnClickListener(new View.OnClickListener() { mClHand.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
// startActivity(new Intent(getActivity(), CodeActivity.class)); // startActivity(new Intent(mContext, CodeActivity.class));
// getActivity().startActivity(new Intent(getActivity(), APPListActivity.class)); // mContext.startActivity(new Intent(mContext, APPListActivity.class));
openScheme(SchemeUtils.SCHEME_HAND); openScheme(SchemeUtils.SCHEME_HAND);
} }
}); });
@@ -410,7 +442,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() { NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() {
@Override @Override
public void setSosNumber(String json) { 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.putExtra("setting_sos", phone);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent); mContext.startActivity(intent);
@@ -472,7 +504,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
} }
}); });
initAmap(); initAmap();
getAlarmClock(); // getAlarmClock();
} }
@Override @Override
@@ -520,7 +552,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
dialog.setMessage("绑定手机才能使用"); dialog.setMessage("绑定手机才能使用");
dialog.show(); dialog.show();
} else { } 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 unit (选填)单位选择公制m或英制i默认为公制单位
* @param listener 网络访问结果回调 * @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 @Override
public void onError(Throwable e) { public void onError(Throwable e) {
Log.e("getWeatherNow", "onError: " + e); Log.e("getWeatherNow", "onError: " + e);
@@ -677,8 +709,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
if (Code.OK == weatherBean.getCode()) { if (Code.OK == weatherBean.getCode()) {
WeatherNowBean.NowBaseBean now = weatherBean.getNow(); WeatherNowBean.NowBaseBean now = weatherBean.getNow();
// String imageName = "he" + now.getIcon(); // String imageName = "he" + now.getIcon();
// int resId = getResources().getIdentifier(imageName, "drawable", getActivity().getPackageName()); // int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
// iv_pic.setImageDrawable(getActivity().getDrawable(resId)); // iv_pic.setImageDrawable(mContext.getDrawable(resId));
tv_temp.setText(now.getTemp() + ""); tv_temp.setText(now.getTemp() + "");
} else { } 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 @Override
public void onError(Throwable throwable) { public void onError(Throwable throwable) {
Log.e("getWeather24Hourly", "onError: " + throwable); Log.e("getWeather24Hourly", "onError: " + throwable);
@@ -704,12 +736,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
String imageName = "he" + now.getIcon(); String imageName = "he" + now.getIcon();
Log.e(TAG, "onSuccess: " + imageName); Log.e(TAG, "onSuccess: " + imageName);
if (isAdded()) { if (isAdded()) {
int resId = getResources().getIdentifier(imageName, "drawable", getActivity().getPackageName()); int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
Log.e(TAG, "onSuccess: " + resId); Log.e(TAG, "onSuccess: " + resId);
if (resId == 0) { if (resId == 0) {
iv_pic.setImageDrawable(getActivity().getDrawable(R.drawable.he100)); iv_pic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
} else { } else {
iv_pic.setImageDrawable(getActivity().getDrawable(resId)); iv_pic.setImageDrawable(mContext.getDrawable(resId));
} }
tv_temp.setText(now.getTemp() + ""); tv_temp.setText(now.getTemp() + "");
} }
@@ -764,10 +796,13 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
super.onDestroy(); super.onDestroy();
NetworkUtils.unregisterNetworkStatusChangedListener(this); NetworkUtils.unregisterNetworkStatusChangedListener(this);
if (batteryReceiver != null) { if (batteryReceiver != null) {
getActivity().unregisterReceiver(batteryReceiver); mContext.unregisterReceiver(batteryReceiver);
} }
if (mbatteryReceiver != null) { 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) { private void setActivity(ActivityBean activity) {
Glide.with(iv_avatar_a).load(activity.getAvatar()).error(getResources().getDrawable(R.drawable.default_head)).into(iv_avatar_a); 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() + "人参加"); 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()); tv_address_a.setText(activity.getAddress());
} }
private String getTime(long second) { private String getTime(long second) {
long ms = second * 1000L;
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm"); SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
Date date = new Date(second * 1000); Date date = new Date(ms);
return sdf.format(date); String time = sdf.format(date);
Log.e(TAG, "getTime: " + time);
return time;
} }
private void initView() { private void initView() {

View File

@@ -11,6 +11,7 @@ import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent; import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.FragmentEvent; import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.bean.ActivityBean; import com.uiui.aios.bean.ActivityBean;
import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.bean.ArticleInfo; import com.uiui.aios.bean.ArticleInfo;
@@ -713,12 +714,17 @@ public class NetInterfaceManager {
if (listBaseResponse.code == 200) { if (listBaseResponse.code == 200) {
List<AlarmClockData> alarmClockData = listBaseResponse.data; List<AlarmClockData> alarmClockData = listBaseResponse.data;
if (alarmClockData != null && alarmClockData.size() != 0) { if (alarmClockData != null && alarmClockData.size() != 0) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockData);
if (callback != null) callback.setAlarmClock(alarmClockData); if (callback != null) callback.setAlarmClock(alarmClockData);
} else { } else {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
if (callback != null) callback.setAlarmClockEmpty(); if (callback != null) callback.setAlarmClockEmpty();
} }
mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, GsonUtils.toJsonString(alarmClockData)); mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, GsonUtils.toJsonString(alarmClockData));
} else { } else {
AlarmUtils.getInstance().deleteAllAlarmClock();
AlarmUtils.getInstance().setAlarmClockData(null);
mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, ""); mCacheHelper.put(URLAddress.GET_ALARM_CLOCK, "");
if (callback != null) callback.setAlarmClockEmpty(); 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() { NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() {
@Override @Override
public void setAlarmClock(List<AlarmClockData> alarmClockList) { public void setAlarmClock(List<AlarmClockData> alarmClockList) {
AlarmUtils.getInstance().setAlarmClockData(alarmClockList); Log.e(TAG, "setAlarmClock: " + alarmClockList);
} }
@Override @Override
public void setAlarmClockEmpty() { public void setAlarmClockEmpty() {
AlarmUtils.getInstance().deleteAllAlarmClock(); Log.e(TAG, "setAlarmClock: ");
AlarmUtils.getInstance().setAlarmClockData(null);
} }
@Override @Override
public void onError() { 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.XGPushRegisterResult;
import com.tencent.android.tpush.XGPushShowedResult; import com.tencent.android.tpush.XGPushShowedResult;
import com.tencent.android.tpush.XGPushTextMessage; 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.common.NotificationService;
import com.uiui.aios.tpush.po.XGNotification; import com.uiui.aios.tpush.po.XGNotification;
import com.uiui.aios.utils.ToastUtil;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; 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 TEST_ACTION = "com.qq.xgdemo.activity.TEST_ACTION";
public static final String LogTag = "xg.test"; public static final String LogTag = "xg.test";
public static final String SET_ALARMCLOCK = "zuoyeos.action.change.alarmclaock";
private Context mContext; private Context mContext;
private ContentResolver mResolver; private ContentResolver mResolver;
@@ -286,9 +289,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
// Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); // 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) { private void processCustomMessage(Context context, XGPushTextMessage message) {
if (context == null || message == null) { if (context == null || message == null) {
@@ -305,9 +307,12 @@ public class MessageReceiver extends XGPushBaseReceiver {
} }
switch (title) { switch (title) {
case JIGUANG_ALARM_CLOCK:
ToastUtil.betaShow("收到推送消息: 设置闹钟");
Intent intent = new Intent(SET_ALARMCLOCK);
mContext.sendBroadcast(intent);
break;
default: default:
} }
} }
} }

View File

@@ -51,6 +51,7 @@ public class ApkUtils {
this.add("com.android.calendar"); this.add("com.android.calendar");
this.add("com.android.uiuios"); this.add("com.android.uiuios");
this.add("com.uiui.os"); this.add("com.uiui.os");
this.add("com.uiui.health");
}}; }};
private static HashSet<String> showPackageName = new HashSet<String>() {{ private static HashSet<String> showPackageName = new HashSet<String>() {{
this.add("com.android.dialer"); 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_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
@@ -50,7 +49,5 @@
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>