From 56a9a019ce10925e9e2d7d7e18f30aa3393bef49 Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Thu, 22 Sep 2022 10:18:52 +0800 Subject: [PATCH] =?UTF-8?q?version:3.8=20fix:=E4=BF=AE=E5=A4=8D=E6=8A=A5?= =?UTF-8?q?=E9=94=99=20update:=E4=BC=98=E5=8C=96=E9=97=B9=E9=92=9F?= =?UTF-8?q?=E5=93=8D=E9=93=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 5 + .../uiui/aios/activity/NoticeActivity.java | 25 +++- .../activity/alarm/AlarmClockActivity.java | 36 +++++- .../java/com/uiui/aios/alarm/AlarmUtils.java | 4 +- .../fragment/BaseFragmentPagerAdapter.java | 2 +- .../uiui/aios/fragment/CustomFragment.java | 95 +++++++++----- .../uiui/aios/fragment/SecondFragment.java | 11 +- .../aios/network/NetInterfaceManager.java | 6 + .../aios/service/main/MainSPresenter.java | 7 +- .../com/uiui/aios/tpush/MessageReceiver.java | 15 ++- .../java/com/uiui/aios/utils/ApkUtils.java | 1 + .../com/uiui/aios/utils/GlideLoadUtils.java | 78 ++++++++++++ .../java/com/uiui/aios/utils/WakeUpUtils.java | 119 ++++++++++++++++++ .../main/res/layout/activity_alarm_clock.xml | 3 - 15 files changed, 359 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/com/uiui/aios/utils/GlideLoadUtils.java create mode 100644 app/src/main/java/com/uiui/aios/utils/WakeUpUtils.java diff --git a/app/build.gradle b/app/build.gradle index e9fc005..5fde585 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1fb231c..f4eb803 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ package="com.uiui.aios" android:sharedUserId="android.uid.system"> + + @@ -11,6 +13,9 @@ + + + diff --git a/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java b/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java index 25ce766..ef1680a 100644 --- a/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java @@ -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 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 { diff --git a/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java b/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java index 1104b27..96fd313 100644 --- a/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java @@ -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) { - 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(); + } + } } } diff --git a/app/src/main/java/com/uiui/aios/alarm/AlarmUtils.java b/app/src/main/java/com/uiui/aios/alarm/AlarmUtils.java index 8e8caac..30019e7 100644 --- a/app/src/main/java/com/uiui/aios/alarm/AlarmUtils.java +++ b/app/src/main/java/com/uiui/aios/alarm/AlarmUtils.java @@ -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); diff --git a/app/src/main/java/com/uiui/aios/fragment/BaseFragmentPagerAdapter.java b/app/src/main/java/com/uiui/aios/fragment/BaseFragmentPagerAdapter.java index c184951..f5f06ca 100644 --- a/app/src/main/java/com/uiui/aios/fragment/BaseFragmentPagerAdapter.java +++ b/app/src/main/java/com/uiui/aios/fragment/BaseFragmentPagerAdapter.java @@ -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(); } /** diff --git a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java index 823063d..9f1eaa2 100644 --- a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java @@ -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); } } } diff --git a/app/src/main/java/com/uiui/aios/fragment/SecondFragment.java b/app/src/main/java/com/uiui/aios/fragment/SecondFragment.java index 6cfe189..bc26541 100644 --- a/app/src/main/java/com/uiui/aios/fragment/SecondFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/SecondFragment.java @@ -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() { diff --git a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java index bc37c14..11db742 100644 --- a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java @@ -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 = 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(); } diff --git a/app/src/main/java/com/uiui/aios/service/main/MainSPresenter.java b/app/src/main/java/com/uiui/aios/service/main/MainSPresenter.java index 669267d..4f2433d 100644 --- a/app/src/main/java/com/uiui/aios/service/main/MainSPresenter.java +++ b/app/src/main/java/com/uiui/aios/service/main/MainSPresenter.java @@ -60,18 +60,17 @@ public class MainSPresenter implements MainSContact.Presenter { NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() { @Override public void setAlarmClock(List 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: "); } }); diff --git a/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java b/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java index ff447b9..2fc1cbb 100644 --- a/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java +++ b/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java @@ -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: } } - - } diff --git a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java index 147f7fb..74cce82 100644 --- a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java @@ -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 showPackageName = new HashSet() {{ this.add("com.android.dialer"); diff --git a/app/src/main/java/com/uiui/aios/utils/GlideLoadUtils.java b/app/src/main/java/com/uiui/aios/utils/GlideLoadUtils.java new file mode 100644 index 0000000..3885fc6 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/utils/GlideLoadUtils.java @@ -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"); + } + } +} diff --git a/app/src/main/java/com/uiui/aios/utils/WakeUpUtils.java b/app/src/main/java/com/uiui/aios/utils/WakeUpUtils.java new file mode 100644 index 0000000..fb35a7b --- /dev/null +++ b/app/src/main/java/com/uiui/aios/utils/WakeUpUtils.java @@ -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"); + } + }); + + } +} diff --git a/app/src/main/res/layout/activity_alarm_clock.xml b/app/src/main/res/layout/activity_alarm_clock.xml index 211262c..98cdb62 100644 --- a/app/src/main/res/layout/activity_alarm_clock.xml +++ b/app/src/main/res/layout/activity_alarm_clock.xml @@ -36,7 +36,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - \ No newline at end of file