diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fcb62b3..31e507a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,10 @@ android:restoreAnyVersion="true" android:supportsRtl="true" android:theme="@style/AppTheme"> + healthCodes) { + mMagicIndicator.setNavigator(scaleCircleNavigator); + scaleCircleNavigator.setCircleCount(healthCodes.size()); + scaleCircleNavigator.setNormalCircleColor(Color.DKGRAY); + scaleCircleNavigator.setSelectedCircleColor(Color.LTGRAY); + scaleCircleNavigator.setCircleClickListener(new ScaleCircleNavigator.OnCircleClickListener() { + @Override + public void onClick(int index) { + + } + }); + ViewPagerHelper.bind(mMagicIndicator, mViewPager); + List imageViews = new ArrayList<>(); + for (HealthCode healthCode : healthCodes) { + ImageView image = new ImageView(this); + image.setAdjustViewBounds(true); + image.setScaleType(ImageView.ScaleType.FIT_CENTER); + Glide.with(this).load(healthCode.getImg()).into(image); + imageViews.add(image); + } + mHealthCodeAdapter.setImageViews(imageViews); + mHealthCodeAdapter.notifyDataSetChanged(); + } + + + private void getHealthCode() { + NetInterfaceManager.getInstance().getHealthCodeApi() + .getArticleDetails(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getHealthCode", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getHealthCode", "onNext: " + listBaseResponse); + if (listBaseResponse.code == 200) { + List healthCodeList = listBaseResponse.data; + setImageViews(healthCodeList); + } else { + + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getHealthCode", "onError: "); + } + + @Override + public void onComplete() { + Log.e("getHealthCode", "onComplete: "); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/os/activity/main/MainActivity.java b/app/src/main/java/com/uiui/os/activity/main/MainActivity.java index 0d5c15e..4c1a401 100644 --- a/app/src/main/java/com/uiui/os/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/os/activity/main/MainActivity.java @@ -32,6 +32,7 @@ import com.uiui.os.bean.DesktopIcon; import com.uiui.os.fragment.AppListFragment; import com.uiui.os.fragment.BaseFragmentPagerAdapter; import com.uiui.os.fragment.CustomFragment; +import com.uiui.os.fragment.SecondFragment; import com.uiui.os.utils.APKUtils; import com.uiui.os.utils.AppUsedTimeUtils; import com.uiui.os.view.ScaleCircleNavigator; @@ -60,6 +61,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter; private List mFragments; private CustomFragment mCustomFragment; + private SecondFragment mSecondFragment; @Override public int getLayoutId() { @@ -79,6 +81,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); // fragmentTransaction.add(R.id.viewPager, appListFragment); // fragmentTransaction.commit(); + mSecondFragment = new SecondFragment(); + mFragments.add(mSecondFragment); mCustomFragment = new CustomFragment(); mFragments.add(mCustomFragment); diff --git a/app/src/main/java/com/uiui/os/adapter/HealthCodeAdapter.java b/app/src/main/java/com/uiui/os/adapter/HealthCodeAdapter.java new file mode 100644 index 0000000..8cf2d8e --- /dev/null +++ b/app/src/main/java/com/uiui/os/adapter/HealthCodeAdapter.java @@ -0,0 +1,43 @@ +package com.uiui.os.adapter; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.viewpager.widget.PagerAdapter; + +import java.util.List; + +public class HealthCodeAdapter extends PagerAdapter { + private List mImageViews; + + public void setImageViews(List imageViews) { + this.mImageViews = imageViews; + } + + @Override + public int getCount() { + return mImageViews == null ? 0 : mImageViews.size(); + } + + @Override + public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { + return view == object; + + } + + @NonNull + @Override + public Object instantiateItem(@NonNull ViewGroup container, int position) { + // 给 container 添加一个view + container.addView(mImageViews.get(position)); + // 返回一个和该view相对的object + return mImageViews.get(position); + } + + @Override + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { + container.removeView(mImageViews.get(position)); + } +} diff --git a/app/src/main/java/com/uiui/os/bean/HealthCode.java b/app/src/main/java/com/uiui/os/bean/HealthCode.java new file mode 100644 index 0000000..d9bf59a --- /dev/null +++ b/app/src/main/java/com/uiui/os/bean/HealthCode.java @@ -0,0 +1,26 @@ +package com.uiui.os.bean; + +import java.io.Serializable; + +public class HealthCode implements Serializable { + private static final long serialVersionUID = 3722434160181671038L; + + int id; + String img; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getImg() { + return img; + } + + public void setImg(String img) { + this.img = img; + } +} diff --git a/app/src/main/java/com/uiui/os/fragment/CustomFragment.java b/app/src/main/java/com/uiui/os/fragment/CustomFragment.java index 3b1dcc7..36b6ad8 100644 --- a/app/src/main/java/com/uiui/os/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/os/fragment/CustomFragment.java @@ -44,6 +44,7 @@ import com.tencent.mmkv.MMKV; import com.uiui.os.BuildConfig; import com.uiui.os.R; import com.uiui.os.activity.APPListActivity; +import com.uiui.os.activity.CodeActivity; import com.uiui.os.activity.EmergencyActivity; import com.uiui.os.activity.weather.WeatherActivity; import com.uiui.os.adapter.AlarmClockAdapter; @@ -72,10 +73,13 @@ import butterknife.ButterKnife; * create an instance of this fragment. */ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkStatusChangedListener { - @BindView(R.id.cl_alarm) - ConstraintLayout cl_alarm; +// @BindView(R.id.cl_alarm) +// ConstraintLayout cl_alarm; + @BindView(R.id.cl_wifi) ConstraintLayout cl_wifi; + @BindView(R.id.qr_code) + ConstraintLayout qr_code; @BindView(R.id.cl_sos) ConstraintLayout cl_soso; @BindView(R.id.cl_allapp) @@ -84,8 +88,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt ConstraintLayout cl_weather; @BindView(R.id.cl_battery) ConstraintLayout cl_battery; - @BindView(R.id.tv_add) - TextView tv_add; +// @BindView(R.id.tv_add) +// TextView tv_add; @BindView(R.id.tv_battery) TextView tv_battery; @BindView(R.id.tv_location) @@ -100,8 +104,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt ImageView iv_charging; @BindView(R.id.rv_noti) RecyclerView rv_noti; - @BindView(R.id.rv_clock) - RecyclerView rv_clock; +// @BindView(R.id.rv_clock) +// RecyclerView rv_clock; @BindView(R.id.wifi_ssid) TextView wifi_ssid; @BindView(R.id.iv_sos) @@ -118,7 +122,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private View rootView; private List alarmItemList; private NotificationAdapter notificationAdapter; - private AlarmClockAdapter alarmClockAdapter; +// private AlarmClockAdapter alarmClockAdapter; private SOSNnmberAdapter sosNnmberAdapter; private MMKV mmkv; private Context mContext; @@ -157,7 +161,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt public void setAlarmItem(List alarmItem) { this.alarmItemList = alarmItem; - setAlarm(); +// setAlarm(); } @Override @@ -287,12 +291,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt killBackgroundApp(); } }); - cl_alarm.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - APKUtils.openPackage(getActivity(), "com.alarmclock.uiui"); - } - }); +// cl_alarm.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// APKUtils.openPackage(getActivity(), "com.alarmclock.uiui"); +// } +// }); notificationAdapter = new NotificationAdapter(); rv_noti.setLayoutManager(new LinearLayoutManager(getActivity())); rv_noti.setAdapter(notificationAdapter); @@ -307,9 +311,9 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面 } }); - alarmClockAdapter = new AlarmClockAdapter(); - rv_clock.setLayoutManager(new LinearLayoutManager(getActivity())); - rv_clock.setAdapter(alarmClockAdapter); +// alarmClockAdapter = new AlarmClockAdapter(); +// rv_clock.setLayoutManager(new LinearLayoutManager(getActivity())); +// rv_clock.setAdapter(alarmClockAdapter); sosNnmberAdapter = new SOSNnmberAdapter(); rv_sos.setLayoutManager(new LinearLayoutManager(getActivity())); rv_sos.setAdapter(sosNnmberAdapter); @@ -345,14 +349,20 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } } }); - setAlarm(); + qr_code.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(getActivity(), CodeActivity.class)); + } + }); +// setAlarm(); refreshMemory(); } @Override public void onResume() { super.onResume(); - setAlarm(); +// setAlarm(); setSosNumber(); } @@ -372,12 +382,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private void setAlarm() { if (rootView == null) return; if (alarmItemList == null) { - tv_add.setVisibility(View.VISIBLE); - rv_clock.setVisibility(View.GONE); +// tv_add.setVisibility(View.VISIBLE); +// rv_clock.setVisibility(View.GONE); } else { - tv_add.setVisibility(View.GONE); - rv_clock.setVisibility(View.VISIBLE); - alarmClockAdapter.setAlarmItemList(alarmItemList); +// tv_add.setVisibility(View.GONE); +// rv_clock.setVisibility(View.VISIBLE); +// alarmClockAdapter.setAlarmItemList(alarmItemList); } } diff --git a/app/src/main/java/com/uiui/os/fragment/SecondFragment.java b/app/src/main/java/com/uiui/os/fragment/SecondFragment.java new file mode 100644 index 0000000..3dd5b65 --- /dev/null +++ b/app/src/main/java/com/uiui/os/fragment/SecondFragment.java @@ -0,0 +1,65 @@ +package com.uiui.os.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.uiui.os.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link SecondFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class SecondFragment extends Fragment { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public SecondFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment SecondFragment. + */ + // TODO: Rename and change types and number of parameters + public static SecondFragment newInstance(String param1, String param2) { + SecondFragment fragment = new SecondFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_second, container, false); + } +} diff --git a/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java index 678cd29..377ff88 100644 --- a/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java @@ -10,6 +10,7 @@ import com.uiui.os.bean.NetDesktopIcon; import com.uiui.os.network.api.AlarmClockApi; import com.uiui.os.network.api.AppUsageRecordApi; import com.uiui.os.network.api.GetDesktopApi; +import com.uiui.os.network.api.HealthCodeApi; import com.uiui.os.network.api.RunNewApp; import com.uiui.os.network.api.SOSRecordApi; import com.uiui.os.network.api.SendScreenshotApi; @@ -202,7 +203,6 @@ public class NetInterfaceManager { } - public AppUsageRecordApi getAppUsageRecordControl() { return mRetrofit.create(AppUsageRecordApi.class); } @@ -210,4 +210,8 @@ public class NetInterfaceManager { public SendScreenshotApi getScreenshotApi() { return mRetrofit.create(SendScreenshotApi.class); } + + public HealthCodeApi getHealthCodeApi() { + return mRetrofit.create(HealthCodeApi.class); + } } diff --git a/app/src/main/java/com/uiui/os/network/URLAddress.java b/app/src/main/java/com/uiui/os/network/URLAddress.java index 08e425d..6ed6623 100644 --- a/app/src/main/java/com/uiui/os/network/URLAddress.java +++ b/app/src/main/java/com/uiui/os/network/URLAddress.java @@ -26,5 +26,7 @@ public class URLAddress { public static final String GET_GOODS_DETAILS = "getGoodsDetails"; /*获取资讯详情*/ public static final String GET_ARTICLE_DETAILS = "getArticleDetails"; + /*获取健康吗*/ + public static final String GET_HEALTH_CODE = "getHealthCode"; } diff --git a/app/src/main/java/com/uiui/os/network/api/HealthCodeApi.java b/app/src/main/java/com/uiui/os/network/api/HealthCodeApi.java new file mode 100644 index 0000000..1c07478 --- /dev/null +++ b/app/src/main/java/com/uiui/os/network/api/HealthCodeApi.java @@ -0,0 +1,18 @@ +package com.uiui.os.network.api; + +import com.uiui.os.bean.BaseResponse; +import com.uiui.os.bean.HealthCode; +import com.uiui.os.network.URLAddress; + +import java.util.List; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface HealthCodeApi { + @GET(URLAddress.GET_HEALTH_CODE) + Observable>> getArticleDetails( + @Query("sn") String sn + ); +} diff --git a/app/src/main/res/drawable-hdpi/com_android_appstore.png b/app/src/main/res/drawable-hdpi/com_android_appstore.png index cfc37e9..d318a48 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_appstore.png and b/app/src/main/res/drawable-hdpi/com_android_appstore.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_browser.png b/app/src/main/res/drawable-hdpi/com_android_browser.png index 28d243b..f0c9cb1 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_browser.png and b/app/src/main/res/drawable-hdpi/com_android_browser.png differ diff --git a/app/src/main/res/drawable-hdpi/com_uiui_sn.png b/app/src/main/res/drawable-hdpi/com_uiui_sn.png new file mode 100644 index 0000000..900dded Binary files /dev/null and b/app/src/main/res/drawable-hdpi/com_uiui_sn.png differ diff --git a/app/src/main/res/drawable-hdpi/health_code.png b/app/src/main/res/drawable-hdpi/health_code.png new file mode 100644 index 0000000..a67a4a5 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/health_code.png differ diff --git a/app/src/main/res/layout-land/activity_code.xml b/app/src/main/res/layout-land/activity_code.xml new file mode 100644 index 0000000..30efa0b --- /dev/null +++ b/app/src/main/res/layout-land/activity_code.xml @@ -0,0 +1,27 @@ + + + + + + + \ 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 542f591..997d023 100644 --- a/app/src/main/res/layout-land/fragment_custom.xml +++ b/app/src/main/res/layout-land/fragment_custom.xml @@ -171,8 +171,56 @@ android:layout_weight="1" android:orientation="horizontal"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_code.xml b/app/src/main/res/layout-port/activity_code.xml new file mode 100644 index 0000000..30efa0b --- /dev/null +++ b/app/src/main/res/layout-port/activity_code.xml @@ -0,0 +1,27 @@ + + + + + + + \ 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 18ddbfa..10b4fa8 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -170,13 +170,60 @@ app:layout_constraintTop_toBottomOf="@+id/textView11" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:background="@drawable/custom_background" + tools:ignore="NestedWeights"> - - @@ -294,9 +329,9 @@ android:layout_width="32dp" android:layout_height="32dp" android:layout_marginStart="32dp" - android:src="@drawable/wifi_icon" android:adjustViewBounds="true" android:scaleType="centerInside" + android:src="@drawable/wifi_icon" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout-port/fragment_second.xml b/app/src/main/res/layout-port/fragment_second.xml new file mode 100644 index 0000000..7127939 --- /dev/null +++ b/app/src/main/res/layout-port/fragment_second.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 6b56b9c..83ce022 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 6b56b9c..83ce022 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 6b56b9c..83ce022 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 6b56b9c..83ce022 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 6b56b9c..83ce022 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ