diff --git a/app/build.gradle b/app/build.gradle index adf276e..b8c1df0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiuios.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 17 - versionName "2.6" + versionCode 18 + versionName "2.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -198,7 +198,10 @@ dependencies { // implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' //MMKV implementation 'com.tencent:mmkv-static:1.2.14' - implementation 'com.tencent.tpns:tpns:1.3.7.0-release' + //腾讯移动推送 TPNS + implementation 'com.tencent.tpns:tpns:1.3.8.0-release' + //阿里云推送 + implementation 'com.aliyun.ams:alicloud-android-push:3.8.0' //状态栏透明 implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' //指示器 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 98386b1..e430edd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -105,7 +105,12 @@ - + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -279,7 +314,7 @@ - + @@ -313,6 +348,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/uiuios/aios/AppInfo.java b/app/src/main/java/com/uiuios/aios/AppInfo.java deleted file mode 100644 index eb10c2c..0000000 --- a/app/src/main/java/com/uiuios/aios/AppInfo.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.uiuios.aios; - -import java.io.Serializable; - -public class AppInfo implements Serializable { - - private static final long serialVersionUID = -5488458740561098181L; - -} diff --git a/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java b/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java index 182ede7..f1b1983 100644 --- a/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java @@ -726,7 +726,7 @@ public class ControlActivity extends AppCompatActivity { } private void getLocation() { - String addr = MMKV.defaultMMKV().decodeString(CommonConfig.MAP_ADDRESS_KEY); + String addr = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).decodeString(CommonConfig.MAP_ADDRESS_KEY); if (TextUtils.isEmpty(addr)) { tv_location.setText("未知"); diff --git a/app/src/main/java/com/uiuios/aios/activity/DailyAppActivity.java b/app/src/main/java/com/uiuios/aios/activity/DailyAppActivity.java new file mode 100644 index 0000000..919ff8a --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/activity/DailyAppActivity.java @@ -0,0 +1,66 @@ +package com.uiuios.aios.activity; + +import android.content.res.Configuration; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.uiuios.aios.R; +import com.uiuios.aios.adapter.DailyAppAdapter; +import com.uiuios.aios.base.BaseActivity; +import com.uiuios.aios.bean.DailyAppBean; +import com.uiuios.aios.manager.AppStatusManager; +import com.uiuios.aios.view.GridSpaceItemDecoration; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class DailyAppActivity extends BaseActivity { + private static final String TAG = DailyAppActivity.class.getSimpleName(); + + private DailyAppAdapter mDailyAppAdapter; + + @BindView(R.id.recyclerView) + RecyclerView recyclerView; + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.tv_appsize) + TextView tv_appsize; + + @Override + public int getLayoutId() { + return R.layout.activity_dailyapp; + } + + @Override + public void initView() { + ButterKnife.bind(this); + mDailyAppAdapter = new DailyAppAdapter(); + if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + recyclerView.setLayoutManager(new GridLayoutManager(this, 5)); + recyclerView.addItemDecoration(new GridSpaceItemDecoration(5, 50, 50)); + } else { + recyclerView.setLayoutManager(new GridLayoutManager(this, 3)); + recyclerView.addItemDecoration(new GridSpaceItemDecoration(3, 50, 50)); + } + recyclerView.setAdapter(mDailyAppAdapter); + iv_back.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } + + @Override + public void initData() { + List appBeanList = AppStatusManager.getInstance().getPackageList(); + mDailyAppAdapter.setDailyAppBeans(appBeanList); + tv_appsize.setText(String.format(getString(R.string.app_size), appBeanList.size())); + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java b/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java index cb3830d..42b71ed 100644 --- a/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java @@ -96,7 +96,7 @@ public class EmergencyActivity extends AppCompatActivity { tv_countdown.setText("倒计时(" + (time - aLong - 1) + ")秒"); Log.e(TAG, "accept: " + (time - aLong - 1)); } else { - MMKV mmkv = MMKV.defaultMMKV(); + MMKV mmkv = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); String longitude = mCacheHelper.getAsString(CommonConfig.MAP_LONGITUDE_KEY); String latitude = mCacheHelper.getAsString(CommonConfig.MAP_LATITUDE_KEY); String address = mCacheHelper.getAsString(CommonConfig.MAP_ADDRESS_KEY); diff --git a/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java index ebba38f..a94005d 100644 --- a/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java @@ -15,7 +15,8 @@ import com.uiuios.aios.R; import com.uiuios.aios.adapter.AlarmAdapter; import com.uiuios.aios.base.BaseActivity; import com.uiuios.aios.bean.AlarmClockData; -import com.uiuios.aios.tpush.MessageReceiver; +import com.uiuios.aios.push.PushManager; +import com.uiuios.aios.push.tpush.MessageReceiver; import com.uiuios.aios.utils.ToastUtil; import java.util.List; @@ -95,7 +96,7 @@ public class AlarmClockActivity extends BaseActivity implements AlarmClockContac } IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - filter.addAction(MessageReceiver.SET_ALARMCLOCK); + filter.addAction(PushManager.SET_ALARMCLOCK); registerReceiver(mAlarmClockReceiver, filter); } @@ -107,7 +108,7 @@ public class AlarmClockActivity extends BaseActivity implements AlarmClockContac public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.e(TAG, "onReceive: " + action); - if (MessageReceiver.SET_ALARMCLOCK.equals(action)) { + if (PushManager.SET_ALARMCLOCK.equals(action)) { mPresenter.getAlarmClock(); } } diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java b/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java index de35007..30e898c 100644 --- a/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java +++ b/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java @@ -10,6 +10,7 @@ import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.Contact; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.network.NetInterfaceManager; import com.uiuios.aios.network.URLAddress; import com.uiuios.aios.utils.GsonUtils; @@ -26,7 +27,7 @@ import io.reactivex.rxjava3.subjects.BehaviorSubject; public class ContactPresenter implements ContactContact.Presenter { private Context mContext; private ContactContact.ContactView mView; - private MMKV mMMKV = MMKV.defaultMMKV(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private BehaviorSubject lifecycle; diff --git a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java index b594bb3..50a1ae7 100644 --- a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java @@ -75,8 +75,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { private int appListIndex = 1; private int defaultCurrent = 0; - private HomeWatcher mHomeWatcher; - @Override public int getLayoutId() { return R.layout.activity_main; @@ -147,28 +145,13 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { if (mFragments.size() > 1) { mViewPager.setCurrentItem(defaultCurrent); } - mHomeWatcher = new HomeWatcher(this); - mHomeWatcher.setOnHomePressedListener(new HomeWatcher.OnHomePressedListener() { - @Override - public void onHomePressed() { - //按了HOME键 - Log.e(TAG, "onHomePressed: "); - - } - - @Override - public void onHomeLongPressed() { - Log.e(TAG, "onHomeLongPressed: "); - //长按HOME键 - } - }); - mHomeWatcher.startWatch(); } @Override public void initData() { registmNewAppReceiver(); registerSOSNumberReceiver(); + registerUpdateDesktopReceiver(); mAlarmServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { @@ -392,8 +375,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { if (mNewAppReceiver != null) { unregisterReceiver(mNewAppReceiver); } - if (mHomeWatcher != null) { - mHomeWatcher.stopWatch();// 在销毁时停止监听,不然会报错的。 + if (updateDesktopReceiver != null) { + unregisterReceiver(updateDesktopReceiver); } } @@ -446,6 +429,30 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } } + public static final String ACTION_PACKAGE_HIDE = "com.uiui.aios.ACTION_PACKAGE_HIDE"; + + private UpdateDesktopReceiver updateDesktopReceiver; + + private void registerUpdateDesktopReceiver() { + if (updateDesktopReceiver == null) { + updateDesktopReceiver = new UpdateDesktopReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction("UPDATE_DESKTOP_ICON"); + filter.addAction(ACTION_PACKAGE_HIDE); + registerReceiver(updateDesktopReceiver, filter); + } + + class UpdateDesktopReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + Log.e(TAG, "onReceive: " + intent.getAction()); + addData(); + } + } + @Override public void setSystemSettings() { // mMainPresenter.getDesktopLayout(); diff --git a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java index a921513..d8f3f88 100644 --- a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java +++ b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java @@ -11,6 +11,7 @@ import com.qweather.sdk.bean.weather.WeatherDailyBean; import com.qweather.sdk.view.QWeather; import com.tencent.mmkv.MMKV; import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.manager.RemoteManager; import java.lang.reflect.Type; @@ -27,7 +28,7 @@ public class WeatherPresenter implements WeatherContact.Presenter { private static final String WEATHER_DAILY_KEY = "WEATHER_DAILY_JSON_STRING"; private WeatherContact.WeatherView mView; private Context mContext; - private MMKV mMMKV = MMKV.defaultMMKV(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private BehaviorSubject lifecycle; diff --git a/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java index 11f16e1..c3ee060 100644 --- a/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java +++ b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java @@ -16,6 +16,7 @@ import com.tencent.mmkv.MMKV; import com.uiuios.aios.R; import com.uiuios.aios.activity.QuickAppActivity; import com.uiuios.aios.bean.AppSelectBean; +import com.uiuios.aios.config.CommonConfig; import java.util.List; @@ -26,7 +27,7 @@ public class AppSelectedAdapter extends RecyclerView.Adapter mAppSelectBeans; private int unselectedStatus = -1; private int selecedPosition = unselectedStatus; - private MMKV mMMKV = MMKV.defaultMMKV(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); public void setAppSelectBeans(List appSelectBeanList) { this.mAppSelectBeans = appSelectBeanList; diff --git a/app/src/main/java/com/uiuios/aios/adapter/DailyAppAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/DailyAppAdapter.java new file mode 100644 index 0000000..65831af --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/adapter/DailyAppAdapter.java @@ -0,0 +1,146 @@ +package com.uiuios.aios.adapter; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.gson.JsonObject; +import com.uiuios.aios.R; +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.bean.DailyAppBean; +import com.uiuios.aios.dialog.DailyAppDialog; +import com.uiuios.aios.manager.AppStatusManager; +import com.uiuios.aios.network.NetInterfaceManager; +import com.uiuios.aios.utils.ApkUtils; +import com.uiuios.aios.utils.AppUsedTimeUtils; + +import java.util.List; + +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +public class DailyAppAdapter extends RecyclerView.Adapter { + private static final String TAG = DailyAppAdapter.class.getSimpleName(); + + private Context mContext; + private List mDailyAppBeans; + + public void setDailyAppBeans(List appSelectBeanList) { + this.mDailyAppBeans = appSelectBeanList; + notifyDataSetChanged(); + } + + @NonNull + @Override + public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_daily_app, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull Holder holder, int position) { + DailyAppBean dailyAppBean = mDailyAppBeans.get(position); + holder.iv_icon.setImageDrawable(dailyAppBean.getIcon()); + holder.tv_name.setText(dailyAppBean.getAppName()); + holder.root.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + showDialog(dailyAppBean); + return false; + } + }); + holder.root.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ApkUtils.openPackage(mContext, dailyAppBean.getPackageName(), dailyAppBean.getClassName()); + AppUsedTimeUtils.getInstance().setAppPackageName(dailyAppBean.getPackageName()); + AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); + SendRunningApp(mContext); + } + }); + } + + private void SendRunningApp(Context context) { + String packageName = AppUsedTimeUtils.getInstance().getAppPackageName(); + long time = AppUsedTimeUtils.getInstance().getStartTime(); + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("app_package", packageName); + jsonObject.addProperty("version_name", ApkUtils.getAPPVersionName(context, packageName)); + jsonObject.addProperty("start_time", time / 1000); + String jsonString = jsonObject.toString(); + Log.e(TAG, "SendRunningApp: " + jsonString); + NetInterfaceManager.getInstance() + .getRunningAppObservable(jsonString) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("SendRunningApp", "onSubscribe: "); + } + + @Override + public void onNext(BaseResponse baseResponse) { + Log.e("SendRunningApp", "onSubscribe: " + baseResponse); + } + + @Override + public void onError(Throwable e) { + Log.e("SendRunningApp", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("SendRunningApp", "onComplete: "); + } + }); + } + + + private void showDialog(DailyAppBean dailyAppBean) { + DailyAppDialog dailyAppDialog = new DailyAppDialog(mContext); + dailyAppDialog.setTitle("放到桌面"); + dailyAppDialog.setMessage(dailyAppBean.getAppName()); + dailyAppDialog.setIconImage(dailyAppBean.getIcon()); + dailyAppDialog.setOnClickBottomListener(new DailyAppDialog.OnClickBottomListener() { + @Override + public void onPositiveClick() { + AppStatusManager.getInstance().removeHidedApp(dailyAppBean.getPackageName()); + mDailyAppBeans.remove(dailyAppBean); + notifyDataSetChanged(); + dailyAppDialog.dismiss(); + } + + @Override + public void onNegtiveClick() { + dailyAppDialog.dismiss(); + } + }); + dailyAppDialog.show(); + } + + @Override + public int getItemCount() { + return mDailyAppBeans == null ? 0 : mDailyAppBeans.size(); + } + + static class Holder extends RecyclerView.ViewHolder { + ConstraintLayout root; + ImageView iv_icon; + TextView tv_name; + + Holder(@NonNull View itemView) { + super(itemView); + root = itemView.findViewById(R.id.root); + iv_icon = itemView.findViewById(R.id.iv_icon); + tv_name = itemView.findViewById(R.id.tv_name); + } + } +} diff --git a/app/src/main/java/com/uiuios/aios/adapter/WeatherDayApdapter.java b/app/src/main/java/com/uiuios/aios/adapter/WeatherDayApdapter.java index 23d8219..bf57ba7 100644 --- a/app/src/main/java/com/uiuios/aios/adapter/WeatherDayApdapter.java +++ b/app/src/main/java/com/uiuios/aios/adapter/WeatherDayApdapter.java @@ -70,14 +70,14 @@ public class WeatherDayApdapter extends RecyclerView.Adapter hidedAppSet; + + public static final String APP_STATUS_MANAGER_KEY = "AppStatusManagerSet"; + private static final Set defaultHiedApp = new HashSet() {{ + this.add("om.android.fmradio");//收音机 + this.add("com.android.mms");//信息 + this.add("com.android.gallery3d"); + this.add("com.android.documentsui"); + this.add("com.android.calculator2"); + this.add("com.android.calendar"); + }}; + + private AppStatusManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + Set stringSet = mMMKV.decodeStringSet(APP_STATUS_MANAGER_KEY, defaultHiedApp); + this.hidedAppSet = stringSet; + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new AppStatusManager(context); + } + } + + public static AppStatusManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init AppStatusManager first"); + } + return sInstance; + } + + public Set getHidedAppSet() { + return this.hidedAppSet; + } + + public void addHidedApp(String pkg) { + this.hidedAppSet.add(pkg); + mMMKV.encode(APP_STATUS_MANAGER_KEY, hidedAppSet); + mContext.sendBroadcast(new Intent(MainActivity.ACTION_PACKAGE_HIDE)); + } + + public void removeHidedApp(String pkg) { + this.hidedAppSet.remove(pkg); + mMMKV.encode(APP_STATUS_MANAGER_KEY, hidedAppSet); + mContext.sendBroadcast(new Intent(MainActivity.ACTION_PACKAGE_HIDE)); + } + + public List getPackageList() { + PackageManager pm = mContext.getPackageManager(); + List dailyAppBeanList = new ArrayList<>(); + // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent + Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); + resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); + // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName + List resolveinfoList = pm.queryIntentActivities(resolveIntent, 0); + + for (ResolveInfo packageInfo : resolveinfoList) { + String pkg = packageInfo.activityInfo.packageName; + if (hidedAppSet.contains(pkg)) { + Log.e(TAG, "getPackageList: " + pkg); + DailyAppBean appSelectBean = new DailyAppBean(packageInfo.activityInfo.loadLabel(pm).toString(), + packageInfo.activityInfo.packageName, + packageInfo.activityInfo.name, + packageInfo.activityInfo.loadIcon(pm)); + int i = IconUtils.appClassNameList.indexOf(pkg); + if (i != -1) { + String val = IconUtils.appIconList.get(i); + int resID = mContext.getResources().getIdentifier(val, "drawable", "com.uiui.aios"); + if (resID != 0) { + appSelectBean.setIcon(mContext.getResources().getDrawable(resID)); + } + } + dailyAppBeanList.add(appSelectBean); + } + } + return dailyAppBeanList; + } +} diff --git a/app/src/main/java/com/uiuios/aios/manager/ConnectManager.java b/app/src/main/java/com/uiuios/aios/manager/ConnectManager.java index ddddceb..a7e5ea9 100644 --- a/app/src/main/java/com/uiuios/aios/manager/ConnectManager.java +++ b/app/src/main/java/com/uiuios/aios/manager/ConnectManager.java @@ -5,6 +5,7 @@ import android.content.Context; import android.util.Log; import com.tencent.mmkv.MMKV; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.utils.TimeUtils; public class ConnectManager { @@ -30,7 +31,7 @@ public class ConnectManager { @SuppressLint("StaticFieldLeak") private static ConnectManager sInstance; private Context mContext; - private MMKV mMMKV = MMKV.defaultMMKV(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private ConnectManager(Context context) { if (context == null) { diff --git a/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java b/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java index fc7697f..4a0c7f8 100644 --- a/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java +++ b/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java @@ -25,7 +25,7 @@ public class RemoteManager { @SuppressLint("StaticFieldLeak") private static RemoteManager sInstance; private Context mContext; - private MMKV mMMKV = MMKV.defaultMMKV(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private CacheHelper mCacheHelper; private IGetInfoInterface getInfoInterface; diff --git a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java index 6e53237..b60469e 100644 --- a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java @@ -24,6 +24,7 @@ import com.uiuios.aios.bean.SnInfo; import com.uiuios.aios.bean.SystemSettings; import com.uiuios.aios.bean.UserAvatarInfo; import com.uiuios.aios.bean.UserId; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.disklrucache.CacheHelper; import com.uiuios.aios.manager.ConnectManager; import com.uiuios.aios.manager.ConnectMode; @@ -81,7 +82,7 @@ public class NetInterfaceManager { private Retrofit mRetrofit; private OkHttpClient okHttpClient; - private MMKV mMMKV = MMKV.defaultMMKV(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); //超时时间 diff --git a/app/src/main/java/com/uiuios/aios/push/PushManager.java b/app/src/main/java/com/uiuios/aios/push/PushManager.java new file mode 100644 index 0000000..effd612 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/push/PushManager.java @@ -0,0 +1,62 @@ +package com.uiuios.aios.push; + +import android.annotation.SuppressLint; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; + +import com.tencent.mmkv.MMKV; +import com.uiuios.aios.config.CommonConfig; +import com.uiuios.aios.disklrucache.CacheHelper; +import com.uiuios.aios.utils.ToastUtil; + +public class PushManager { + private static final String TAG = PushManager.class.getSimpleName(); + + public static final String SET_ALARMCLOCK = "zuoyeos.action.change.alarmclaock"; + + + @SuppressLint("StaticFieldLeak") + private static PushManager sInstance; + private Context mContext; + private ContentResolver mResolver; + private CacheHelper mCacheHelper; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + private PushManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + this.mResolver = context.getContentResolver(); + this.mCacheHelper = new CacheHelper(context); + } + + public static void init(Context context) { + if (sInstance == null) { + sInstance = new PushManager(context); + } + } + + public static PushManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init PushManager first"); + } + return sInstance; + } + + private static final String JIGUANG_ALARM_CLOCK = "57"; + + public void setPushContent(String title, String extras) { + 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/uiuios/aios/push/alipush/AliMessageIntentService.java b/app/src/main/java/com/uiuios/aios/push/alipush/AliMessageIntentService.java new file mode 100644 index 0000000..035c9db --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/push/alipush/AliMessageIntentService.java @@ -0,0 +1,99 @@ +package com.uiuios.aios.push.alipush; + +import android.content.Context; +import android.util.Log; + +import com.alibaba.sdk.android.push.AliyunMessageIntentService; +import com.alibaba.sdk.android.push.notification.CPushMessage; + +import java.util.Map; + +/** + * Created by liyazhou on 17/8/22. + * 为避免推送广播被系统拦截的小概率事件,我们推荐用户通过IntentService处理消息互调,接入步骤: + * 1. 创建IntentService并继承AliyunMessageIntentService + * 2. 覆写相关方法,并在Manifest的注册该Service + * 3. 调用接口CloudPushService.setPushIntentService + * 详细用户可参考:https://help.aliyun.com/document_detail/30066.html#h2-2-messagereceiver-aliyunmessageintentservice + */ + +public class AliMessageIntentService extends AliyunMessageIntentService { + private static final String TAG = AliyunMessageIntentService.class.getSimpleName(); + + /** + * 推送通知的回调方法 + * + * @param context + * @param title + * @param summary + * @param extraMap + */ + @Override + protected void onNotification(Context context, String title, String summary, Map extraMap) { + Log.i(TAG, "收到一条推送通知 : " + title + ", summary:" + summary); + } + + /** + * 推送消息的回调方法 + * + * @param context + * @param cPushMessage + */ + @Override + protected void onMessage(Context context, CPushMessage cPushMessage) { + Log.i(TAG, "收到一条推送消息 : " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent()); + } + + /** + * 从通知栏打开通知的扩展处理 + * + * @param context + * @param title + * @param summary + * @param extraMap + */ + @Override + protected void onNotificationOpened(Context context, String title, String summary, String extraMap) { + Log.i(TAG, "onNotificationOpened : " + " : " + title + " : " + summary + " : " + extraMap); + } + + /** + * 无动作通知点击回调。当在后台或阿里云控制台指定的通知动作为无逻辑跳转时,通知点击回调为onNotificationClickedWithNoAction而不是onNotificationOpened + * + * @param context + * @param title + * @param summary + * @param extraMap + */ + @Override + protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) { + Log.i(TAG, "onNotificationClickedWithNoAction : " + " : " + title + " : " + summary + " : " + extraMap); + } + + /** + * 通知删除回调 + * + * @param context + * @param messageId + */ + @Override + protected void onNotificationRemoved(Context context, String messageId) { + Log.i(TAG, "onNotificationRemoved : " + messageId); + } + + /** + * 应用处于前台时通知到达回调。注意:该方法仅对自定义样式通知有效,相关详情请参考https://help.aliyun.com/document_detail/30066.html#h3-3-4-basiccustompushnotification-api + * + * @param context + * @param title + * @param summary + * @param extraMap + * @param openType + * @param openActivity + * @param openUrl + */ + @Override + protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) { + Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl); + } +} diff --git a/app/src/main/java/com/uiuios/aios/push/alipush/AliyunMessageReceiver.java b/app/src/main/java/com/uiuios/aios/push/alipush/AliyunMessageReceiver.java new file mode 100644 index 0000000..42070eb --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/push/alipush/AliyunMessageReceiver.java @@ -0,0 +1,116 @@ +package com.uiuios.aios.push.alipush; + +import android.content.Context; +import android.util.Log; + +import com.alibaba.sdk.android.push.MessageReceiver; +import com.alibaba.sdk.android.push.notification.CPushMessage; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.uiuios.aios.push.PushManager; + +import java.util.Map; + +/** + * @author: 正纬 + * @since: 15/4/9 + * @version: 1.1 + * @feature: 用于接收推送的通知和消息 + */ +public class AliyunMessageReceiver extends MessageReceiver { + // 消息接收部分的LOG_TAG + public static final String TAG = AliyunMessageReceiver.class.getSimpleName(); + + /** + * 推送通知的回调方法 + * + * @param context + * @param title + * @param summary + * @param extraMap + */ + @Override + public void onNotification(Context context, String title, String summary, Map extraMap) { + // TODO 处理推送通知 + if (null != extraMap) { + for (Map.Entry entry : extraMap.entrySet()) { + Log.i(TAG, "@Get diy param : Key=" + entry.getKey() + " , Value=" + entry.getValue()); + } + } else { + Log.i(TAG, "@收到通知 && 自定义消息为空"); + } + Log.i(TAG, "收到一条推送通知 : " + title + ", summary:" + summary); + } + + /** + * 应用处于前台时通知到达回调。注意:该方法仅对自定义样式通知有效,相关详情请参考https://help.aliyun.com/document_detail/30066.html?spm=5176.product30047.6.620.wjcC87#h3-3-4-basiccustompushnotification-api + * + * @param context + * @param title + * @param summary + * @param extraMap + * @param openType + * @param openActivity + * @param openUrl + */ + @Override + protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) { + Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl); + } + + /** + * 推送消息的回调方法 + * + * @param context + * @param cPushMessage + */ + @Override + public void onMessage(Context context, CPushMessage cPushMessage) { + Log.e(TAG, "收到一条推送消息 : " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent()); + String title = cPushMessage.getTitle(); + String content = cPushMessage.getContent(); + JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject(); + String extras = ""; + if (extrasJson.get("extras") != null) { + extras = extrasJson.get("extras").toString(); + } + PushManager.getInstance().setPushContent(title, extras); + } + + /** + * 从通知栏打开通知的扩展处理 + * + * @param context + * @param title + * @param summary + * @param extraMap + */ + @Override + public void onNotificationOpened(Context context, String title, String summary, String extraMap) { + Log.i(TAG, "onNotificationOpened : " + " : " + title + " : " + summary + " : " + extraMap); + } + + /** + * 通知删除回调 + * + * @param context + * @param messageId + */ + @Override + public void onNotificationRemoved(Context context, String messageId) { + Log.i(TAG, "onNotificationRemoved : " + messageId); + } + + /** + * 无动作通知点击回调。当在后台或阿里云控制台指定的通知动作为无逻辑跳转时,通知点击回调为onNotificationClickedWithNoAction而不是onNotificationOpened + * + * @param context + * @param title + * @param summary + * @param extraMap + */ + @Override + protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) { + Log.i(TAG, "onNotificationClickedWithNoAction : " + " : " + title + " : " + summary + " : " + extraMap); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/uiuios/aios/tpush/Constants.java b/app/src/main/java/com/uiuios/aios/push/tpush/Constants.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/tpush/Constants.java rename to app/src/main/java/com/uiuios/aios/push/tpush/Constants.java index 7f33c3e..fd57742 100644 --- a/app/src/main/java/com/uiuios/aios/tpush/Constants.java +++ b/app/src/main/java/com/uiuios/aios/push/tpush/Constants.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.tpush; +package com.uiuios.aios.push.tpush; /** * Created by chacewang on 2019/7/5. diff --git a/app/src/main/java/com/uiuios/aios/tpush/MessageReceiver.java b/app/src/main/java/com/uiuios/aios/push/tpush/MessageReceiver.java similarity index 94% rename from app/src/main/java/com/uiuios/aios/tpush/MessageReceiver.java rename to app/src/main/java/com/uiuios/aios/push/tpush/MessageReceiver.java index 4cc2b96..a2d9dd7 100644 --- a/app/src/main/java/com/uiuios/aios/tpush/MessageReceiver.java +++ b/app/src/main/java/com/uiuios/aios/push/tpush/MessageReceiver.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.tpush; +package com.uiuios.aios.push.tpush; import android.content.ContentResolver; import android.content.Context; @@ -16,8 +16,9 @@ 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.uiuios.aios.tpush.common.NotificationService; -import com.uiuios.aios.tpush.po.XGNotification; +import com.uiuios.aios.push.PushManager; +import com.uiuios.aios.push.tpush.common.NotificationService; +import com.uiuios.aios.push.tpush.po.XGNotification; import com.uiuios.aios.utils.ToastUtil; import java.text.SimpleDateFormat; @@ -30,8 +31,6 @@ 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; private PackageManager mPackageManager; @@ -288,9 +287,6 @@ public class MessageReceiver extends XGPushBaseReceiver { // Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); } - //闹钟 - private static final String JIGUANG_ALARM_CLOCK = "57"; - private void processCustomMessage(Context context, XGPushTextMessage message) { if (context == null || message == null) { return; @@ -304,14 +300,6 @@ public class MessageReceiver extends XGPushBaseReceiver { if (extrasJson.get("extras") != null) { extras = extrasJson.get("extras").toString(); } - - switch (title) { - case JIGUANG_ALARM_CLOCK: - ToastUtil.betaShow("收到推送消息: 设置闹钟"); - Intent intent = new Intent(SET_ALARMCLOCK); - mContext.sendBroadcast(intent); - break; - default: - } + PushManager.getInstance().setPushContent(title, extras); } } diff --git a/app/src/main/java/com/uiuios/aios/tpush/common/DBOpenHelper.java b/app/src/main/java/com/uiuios/aios/push/tpush/common/DBOpenHelper.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/tpush/common/DBOpenHelper.java rename to app/src/main/java/com/uiuios/aios/push/tpush/common/DBOpenHelper.java index 6a0dca2..c068ab3 100644 --- a/app/src/main/java/com/uiuios/aios/tpush/common/DBOpenHelper.java +++ b/app/src/main/java/com/uiuios/aios/push/tpush/common/DBOpenHelper.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.tpush.common; +package com.uiuios.aios.push.tpush.common; import android.content.Context; import android.database.sqlite.SQLiteDatabase; diff --git a/app/src/main/java/com/uiuios/aios/tpush/common/NotificationService.java b/app/src/main/java/com/uiuios/aios/push/tpush/common/NotificationService.java similarity index 97% rename from app/src/main/java/com/uiuios/aios/tpush/common/NotificationService.java rename to app/src/main/java/com/uiuios/aios/push/tpush/common/NotificationService.java index 20faa41..952620a 100644 --- a/app/src/main/java/com/uiuios/aios/tpush/common/NotificationService.java +++ b/app/src/main/java/com/uiuios/aios/push/tpush/common/NotificationService.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.tpush.common; +package com.uiuios.aios.push.tpush.common; import android.content.ContentValues; import android.content.Context; @@ -6,7 +6,7 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import com.uiuios.aios.tpush.po.XGNotification; +import com.uiuios.aios.push.tpush.po.XGNotification; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/uiuios/aios/tpush/po/XGNotification.java b/app/src/main/java/com/uiuios/aios/push/tpush/po/XGNotification.java similarity index 97% rename from app/src/main/java/com/uiuios/aios/tpush/po/XGNotification.java rename to app/src/main/java/com/uiuios/aios/push/tpush/po/XGNotification.java index da0de05..fcccd1a 100644 --- a/app/src/main/java/com/uiuios/aios/tpush/po/XGNotification.java +++ b/app/src/main/java/com/uiuios/aios/push/tpush/po/XGNotification.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.tpush.po; +package com.uiuios.aios.push.tpush.po; public class XGNotification { private Integer id; diff --git a/app/src/main/java/com/uiuios/aios/service/main/MainSPresenter.java b/app/src/main/java/com/uiuios/aios/service/main/MainSPresenter.java index df7020c..3850d65 100644 --- a/app/src/main/java/com/uiuios/aios/service/main/MainSPresenter.java +++ b/app/src/main/java/com/uiuios/aios/service/main/MainSPresenter.java @@ -6,6 +6,7 @@ import android.util.Log; import com.tencent.mmkv.MMKV; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiuios.aios.bean.AlarmClockData; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.network.NetInterfaceManager; import java.util.List; @@ -24,7 +25,7 @@ public class MainSPresenter implements MainSContact.Presenter { private static final int OK = 200; private MainSContact.MainSView mView; private Context mContext; - MMKV mMMKV = MMKV.defaultMMKV(); + MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private BehaviorSubject lifecycle; diff --git a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java index d7d0e4e..009b38c 100644 --- a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java @@ -53,6 +53,8 @@ public class ApkUtils { this.add("com.android.calendar"); this.add("com.android.uiuios"); this.add("com.uiui.os"); + this.add("com.uiui.aios"); + this.add("com.uiui.videoplayer"); // this.add("com.uiui.health"); this.add("com.tencent.android.qqdownloader"); // this.add("com.uiuios.appstore"); @@ -226,11 +228,17 @@ public class ApkUtils { } } + DesktopIcon dailyIcon = new DesktopIcon(); + dailyIcon.setIcon(context.getDrawable(R.drawable.icon_daily_app)); + dailyIcon.setLable("日常应用"); + dailyIcon.setPackageName("aios.daily.app"); + desktopIcons.add(0, dailyIcon); + DesktopIcon familyIcon = new DesktopIcon(); familyIcon.setIcon(context.getDrawable(R.drawable.icon_family_space)); familyIcon.setLable("家庭空间"); familyIcon.setPackageName("aios.family"); - desktopIcons.add(0, familyIcon); + desktopIcons.add(1, familyIcon); return desktopIcons; } diff --git a/app/src/main/res/drawable-hdpi/background_weather_rain1.png b/app/src/main/res/drawable-hdpi/background_weather_rain1.png new file mode 100644 index 0000000..72d7119 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/background_weather_rain1.png differ diff --git a/app/src/main/res/drawable-hdpi/background_weather_sun1.png b/app/src/main/res/drawable-hdpi/background_weather_sun1.png new file mode 100644 index 0000000..1f3771c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/background_weather_sun1.png differ diff --git a/app/src/main/res/drawable-hdpi/background_weather_sunny1.png b/app/src/main/res/drawable-hdpi/background_weather_sunny1.png new file mode 100644 index 0000000..da69a33 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/background_weather_sunny1.png differ diff --git a/app/src/main/res/drawable-hdpi/exit.png b/app/src/main/res/drawable-hdpi/exit.png new file mode 100644 index 0000000..8ac4207 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/exit.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_daily_app.png b/app/src/main/res/drawable-hdpi/icon_daily_app.png new file mode 100644 index 0000000..b3b71c1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_daily_app.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_family_space.png b/app/src/main/res/drawable-hdpi/icon_family_space.png index 56b0dfe..999ee77 100644 Binary files a/app/src/main/res/drawable-hdpi/icon_family_space.png and b/app/src/main/res/drawable-hdpi/icon_family_space.png differ diff --git a/app/src/main/res/drawable/background_weather_rain.xml b/app/src/main/res/drawable/background_weather_rain.xml index 357afef..e8f3c68 100644 --- a/app/src/main/res/drawable/background_weather_rain.xml +++ b/app/src/main/res/drawable/background_weather_rain.xml @@ -1,20 +1,17 @@ - + - + + android:bottomRightRadius="16dp" + android:topLeftRadius="16dp" + android:topRightRadius="16dp" /> + android:top="4dp" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/background_weather_sun.xml b/app/src/main/res/drawable/background_weather_sun.xml index 8ff1fb3..e6c1cc4 100644 --- a/app/src/main/res/drawable/background_weather_sun.xml +++ b/app/src/main/res/drawable/background_weather_sun.xml @@ -1,20 +1,17 @@ - + - + + android:bottomRightRadius="16dp" + android:topLeftRadius="16dp" + android:topRightRadius="16dp" /> + android:top="4dp" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/background_weather_sunny.xml b/app/src/main/res/drawable/background_weather_sunny.xml index f7bd9b8..167dd64 100644 --- a/app/src/main/res/drawable/background_weather_sunny.xml +++ b/app/src/main/res/drawable/background_weather_sunny.xml @@ -1,20 +1,17 @@ - + - + + android:bottomRightRadius="16dp" + android:topLeftRadius="16dp" + android:topRightRadius="16dp" /> + android:top="4dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_dailyapp.xml b/app/src/main/res/layout-land/activity_dailyapp.xml new file mode 100644 index 0000000..0965df6 --- /dev/null +++ b/app/src/main/res/layout-land/activity_dailyapp.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_weather.xml b/app/src/main/res/layout-land/activity_weather.xml index b6cf942..255b9ea 100644 --- a/app/src/main/res/layout-land/activity_weather.xml +++ b/app/src/main/res/layout-land/activity_weather.xml @@ -7,32 +7,33 @@ tools:context=".activity.weather.WeatherActivity"> @@ -43,7 +44,7 @@ app:layout_constraintBottom_toTopOf="@+id/constraintLayout2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/constraintLayout3" /> + app:layout_constraintTop_toBottomOf="@+id/constraintLayout" /> - - + android:textSize="@dimen/sp_13" + app:layout_constraintBottom_toBottomOf="@+id/imageView" + app:layout_constraintStart_toEndOf="@+id/imageView" + app:layout_constraintTop_toTopOf="@+id/imageView" /> \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_custom.xml b/app/src/main/res/layout-land/fragment_custom.xml index 59f68e9..ab47585 100644 --- a/app/src/main/res/layout-land/fragment_custom.xml +++ b/app/src/main/res/layout-land/fragment_custom.xml @@ -141,7 +141,6 @@ android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@drawable/home_settings_icon" - app:is_circle="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/textView11" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout-land/item_contact.xml b/app/src/main/res/layout-land/item_contact.xml deleted file mode 100644 index 51baa0d..0000000 --- a/app/src/main/res/layout-land/item_contact.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-land/item_weather.xml b/app/src/main/res/layout-land/item_weather.xml index db8cef0..9e32b1c 100644 --- a/app/src/main/res/layout-land/item_weather.xml +++ b/app/src/main/res/layout-land/item_weather.xml @@ -6,8 +6,9 @@ android:layout_height="match_parent"> + android:src="@drawable/background_weather_sun1" + app:layout_constraintBottom_toBottomOf="@+id/tv_weather" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintHorizontal_bias="0.5" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.168" /> + + - + - + + - \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_dailyapp.xml b/app/src/main/res/layout-port/activity_dailyapp.xml new file mode 100644 index 0000000..ef61774 --- /dev/null +++ b/app/src/main/res/layout-port/activity_dailyapp.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_weather.xml b/app/src/main/res/layout-port/activity_weather.xml index 2cc5e4a..255b9ea 100644 --- a/app/src/main/res/layout-port/activity_weather.xml +++ b/app/src/main/res/layout-port/activity_weather.xml @@ -7,31 +7,33 @@ tools:context=".activity.weather.WeatherActivity"> + android:layout_height="@dimen/dp_32" + app:layout_constraintTop_toTopOf="parent"> @@ -42,7 +44,7 @@ app:layout_constraintBottom_toTopOf="@+id/constraintLayout2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/constraintLayout3" /> + app:layout_constraintTop_toBottomOf="@+id/constraintLayout" /> - - + android:textSize="@dimen/sp_13" + app:layout_constraintBottom_toBottomOf="@+id/imageView" + app:layout_constraintStart_toEndOf="@+id/imageView" + app:layout_constraintTop_toTopOf="@+id/imageView" /> \ No newline at end of file diff --git a/app/src/main/res/layout-port/fragment_custom.xml b/app/src/main/res/layout-port/fragment_custom.xml index 2f311df..10bc752 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -744,7 +744,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_16" android:text="AI问诊" - android:textColor="@color/white" + android:textColor="@color/title_gray" android:textSize="@dimen/sp_17" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout-port/item_app.xml b/app/src/main/res/layout-port/item_app.xml deleted file mode 100644 index c1faa54..0000000 --- a/app/src/main/res/layout-port/item_app.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/custom_dialog.xml b/app/src/main/res/layout/dialog_custom.xml similarity index 100% rename from app/src/main/res/layout/custom_dialog.xml rename to app/src/main/res/layout/dialog_custom.xml diff --git a/app/src/main/res/layout/dialog_daily_app.xml b/app/src/main/res/layout/dialog_daily_app.xml new file mode 100644 index 0000000..55708c3 --- /dev/null +++ b/app/src/main/res/layout/dialog_daily_app.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/password_dialog.xml b/app/src/main/res/layout/dialog_password.xml similarity index 100% rename from app/src/main/res/layout/password_dialog.xml rename to app/src/main/res/layout/dialog_password.xml diff --git a/app/src/main/res/layout/single_dialog.xml b/app/src/main/res/layout/dialog_single.xml similarity index 100% rename from app/src/main/res/layout/single_dialog.xml rename to app/src/main/res/layout/dialog_single.xml diff --git a/app/src/main/res/layout-land/item_app.xml b/app/src/main/res/layout/item_app.xml similarity index 80% rename from app/src/main/res/layout-land/item_app.xml rename to app/src/main/res/layout/item_app.xml index c1faa54..b7df104 100644 --- a/app/src/main/res/layout-land/item_app.xml +++ b/app/src/main/res/layout/item_app.xml @@ -17,8 +17,8 @@ + tools:src="@mipmap/ic_launcher" /> - \ No newline at end of file diff --git a/app/src/main/res/layout-port/item_contact.xml b/app/src/main/res/layout/item_contact.xml similarity index 56% rename from app/src/main/res/layout-port/item_contact.xml rename to app/src/main/res/layout/item_contact.xml index d16f2fe..3ad474e 100644 --- a/app/src/main/res/layout-port/item_contact.xml +++ b/app/src/main/res/layout/item_contact.xml @@ -1,6 +1,7 @@ @@ -29,32 +30,38 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.5" /> - + app:layout_constraintTop_toTopOf="parent"> - + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/item_daily_app.xml b/app/src/main/res/layout/item_daily_app.xml new file mode 100644 index 0000000..e513e9b --- /dev/null +++ b/app/src/main/res/layout/item_daily_app.xml @@ -0,0 +1,40 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2a0b592..e6de816 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -41,4 +41,6 @@ #00d56b #a0a0a0 + #323a4c + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c989c5c..e48ae2b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ AIOS系统 - - Hello blank secondFragment + %d款应用 + diff --git a/build.gradle b/build.gradle index af488a4..b5ffed2 100644 --- a/build.gradle +++ b/build.gradle @@ -8,6 +8,7 @@ buildscript { maven { url "https://jitpack.io" } maven { url 'http://developer.huawei.com/repo/' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' } } dependencies { classpath 'com.android.tools.build:gradle:3.6.4' @@ -25,6 +26,7 @@ allprojects { maven { url "https://jitpack.io" } maven { url 'http://developer.huawei.com/repo/' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' } } gradle.projectsEvaluated { tasks.withType(JavaCompile) {