-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":26,"versionName":"202106201445","enabled":true,"outputFile":"ICL02Sport_V26_202106201445_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Sport_V26_202106201445_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":27,"versionName":"202106301157","enabled":true,"outputFile":"ICL02Sport_V27_202106301157_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Sport_V27_202106301157_release.apk","properties":{}}]
\ No newline at end of file
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
import com.ic.sport.adapter.FragmentAdapter;
import com.ic.sport.adapter.IndicatorAdapter;
private IndicatorAdapter indicatorAdapter;
private FragmentAdapter myAdapter;
+ private TextView topTimeTv;
+ private ViewPager2 myViewPager2;
+ private TextView topTitleTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pedometer);
+ initView();
initViewPage();
initIndicator();
initPedometerModel();
}
+ private void initView() {
+ myViewPager2 = findViewById(R.id.ped_main_view_page);
+ topTimeTv = findViewById(R.id.top_time_tv);
+ topTitleTv = findViewById(R.id.top_left_title_tv);
+ }
+
private void initPedometerModel() {
PedometerModel.Factory factory = new PedometerModel.Factory(getApplication());
pedometerModel = new ViewModelProvider(this, factory).get(PedometerModel.class);
((PedMainFragment) myAdapter.getFragment(1)).updateCalorie(calorie);
});
+ pedometerModel.timeValue.observe(this, time -> {
+ //更新时间
+ topTimeTv.setText(time);
+ });
pedometerModel.onBindService();
}
}
private void initViewPage() {
- ViewPager2 myViewPager2 = findViewById(R.id.ped_main_view_page);
myAdapter = new FragmentAdapter(getSupportFragmentManager(), getLifecycle());
myViewPager2.setAdapter(myAdapter);
myViewPager2.setCurrentItem(1);
public void onPageSelected(int position) {
IcLog.i(TAG, "onPageSelected" + position);
indicatorAdapter.updateIndicatorState(position);
+ //设置title
+ String title = getString(R.string.ped_head_name);
+ if (position == 1) {
+ //运动
+ title = getString(R.string.app_name);
+ } else if (position == 2) {
+ //记录
+ title = getString(R.string.pedometer_history_7days);
+ }
+ topTitleTv.setText(title);
}
@Override
package com.ic.sport.model;
import android.app.Application;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.ic.aidl.ped.RecordParcelable;
import com.ic.sport.presenter.PedometerPresenter;
+import com.ic.sport.util.IcLog;
+
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.format.DateTimeFormatter;
import java.util.List;
public class PedometerModel extends AndroidViewModel {
+ private static final String TAG = "PedometerModel";
private final PedometerPresenter pedometerPresenter;
private LiveData<Integer> mObsPedCount;
private LiveData<Float> mCalorie;
private LiveData<List<RecordParcelable>> mObsPedRecord;
+ public MutableLiveData<String> timeValue = new MutableLiveData<>();
private PedometerModel(@NonNull Application application) {
super(application);
mObsPedCount = pedometerPresenter.getObsPedCount();
mObsPedRecord = pedometerPresenter.getObsPedRecord();
mCalorie = pedometerPresenter.getCalorie();
+ //注冊广播,监听时间变化
+ registerTimeDateReceiver();
+ }
+
+ @Override
+ protected void onCleared() {
+ getApplication().unregisterReceiver(mIntentReceiver);
}
+ private static final DateTimeFormatter HH_MM = DateTimeFormatter.ofPattern("HH:mm");
+
+ private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (TextUtils.isEmpty(action)) return;
+ //更新时间
+ String format = LocalDateTime.now().format(HH_MM);
+ IcLog.d(TAG, "format time == > " + format);
+ timeValue.postValue(format);
+ }
+ };
+
+
+ public void registerTimeDateReceiver() {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_TIME_TICK);
+ filter.addAction(Intent.ACTION_TIME_CHANGED);
+ filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+ getApplication().registerReceiver(mIntentReceiver, filter);
+ }
+
+
public LiveData<Float> getCalorie() {
return mCalorie;
}
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
+ android:id="@+id/top_left_title_tv"
android:text="@string/app_name"
android:textColor="@color/green1"
android:textSize="30sp"
android:layout_gravity="right|top"
android:padding="5dp"
android:text="12:12"
+ android:id="@+id/top_time_tv"
android:textColor="@color/white"
android:textSize="30sp"
android:textStyle="bold" />
-#Sun Jun 20 14:45:55 CST 2021\r
-VERSION_CODE=26\r
+#Wed Jun 30 11:57:35 CST 2021\r
+VERSION_CODE=27\r