interface IPedAidlInterface {
void updatePedCount(int count);
+ void updateCalorie(float count);
void updatePedRecord(in List<RecordParcelable> record);
}
pedometerModel = new ViewModelProvider(this, factory).get(PedometerModel.class);
pedometerModel.getObsPedCount().observe(this, integer -> {
- ((PedMainFragment)myAdapter.getFragment(1)).updatePedNumber(integer);
+ ((PedMainFragment) myAdapter.getFragment(1)).updatePedNumber(integer);
});
pedometerModel.getObsPedRecord().observe(this, record -> {
- ((PedRecordFragment)myAdapter.getFragment(2)).updatePedRecord(record);
+ ((PedRecordFragment) myAdapter.getFragment(2)).updatePedRecord(record);
+ });
+
+ pedometerModel.getCalorie().observe(this, calorie -> {
+ ((PedMainFragment) myAdapter.getFragment(1)).updateCalorie(calorie);
});
pedometerModel.onBindService();
private final ViewPager2.OnPageChangeCallback currentItemUpdater = new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
- IcLog.i(TAG,"onPageSelected"+position);
+ IcLog.i(TAG, "onPageSelected" + position);
indicatorAdapter.updateIndicatorState(position);
}
@Override
public void onPageScrollStateChanged(int newState) {
- IcLog.i(TAG,"onPageScrollStateChanged"+newState);
+ IcLog.i(TAG, "onPageScrollStateChanged" + newState);
if (newState == SCROLL_STATE_IDLE) {
- IcLog.i(TAG,"onPageScrollStateChanged"+newState);
+ IcLog.i(TAG, "onPageScrollStateChanged" + newState);
}
}
};
private static final String TAG = "PedMainFragment";
private final Handler mHandler;
+ public void updateCalorie(Float calorie) {
+ pedMainBinding.setCalorieValue(calorie + " kcal");
+ }
+
public interface QueryPedometerCountListener {
void onQueryCount();
}
targetValue = SPUtils.getPedTargetSP(mApp.getApplicationContext());
pedMainBinding.setPedTarget(getResources().getString(R.string.target_text) +
targetValue);
+ pedMainBinding.ringProgress.setMaxProgress(targetValue);
return pedMainBinding.getRoot();
}
private final PedometerPresenter pedometerPresenter;
private LiveData<Integer> mObsPedCount;
+ private LiveData<Float> mCalorie;
private LiveData<List<RecordParcelable>> mObsPedRecord;
private PedometerModel(@NonNull Application application) {
pedometerPresenter = new PedometerPresenter(application.getApplicationContext());
mObsPedCount = pedometerPresenter.getObsPedCount();
mObsPedRecord = pedometerPresenter.getObsPedRecord();
+ mCalorie = pedometerPresenter.getCalorie();
+ }
+
+ public LiveData<Float> getCalorie() {
+ return mCalorie;
}
public LiveData<Integer> getObsPedCount() {
return mObsPedRecord;
}
- public void onBindService(){
+ public void onBindService() {
pedometerPresenter.bindService();
}
- public void onUnBindService(){
+ public void onUnBindService() {
pedometerPresenter.unbindService();
}
- public void queryPedCount(){
+ public void queryPedCount() {
pedometerPresenter.queryPedCount();
}
- public void queryPedRecord(){
+ public void queryPedRecord() {
pedometerPresenter.queryPedRecord();
}
- public void syncPedHeightSetting(int height){
+ public void syncPedHeightSetting(int height) {
pedometerPresenter.syncPedHeightSetting(height);
}
- public void syncPedWeightSetting(int weight){
+ public void syncPedWeightSetting(int weight) {
pedometerPresenter.syncPedWeightSetting(weight);
}
import android.os.IBinder;
import android.os.RemoteException;
+import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.ic.aidl.ped.IPedAidlInterface;
private IPedRemoteService mService;
private MutableLiveData<Integer> mObsPedCount;
private MutableLiveData<List<RecordParcelable>> mObsPedRecord;
+ private MutableLiveData<Float> mCalorie;
private final ExecutorService executorService;
public PedometerPresenter(Context context) {
mContext = context;
mObsPedCount = new MutableLiveData<>();
mObsPedRecord = new MutableLiveData<>();
+ mCalorie = new MutableLiveData<>();
executorService = Executors.newSingleThreadExecutor();
}
mObsPedCount.postValue(count);
}
+ @Override
+ public void updateCalorie(float count) {
+ mCalorie.postValue(count);
+ }
+
@Override
public void updatePedRecord(List<RecordParcelable> record) {
mObsPedRecord.postValue(record);
}
};
+
+ public LiveData<Float> getCalorie() {
+ return mCalorie;
+ }
}
}
public void setProgress(float progress) {
- //setProgress(progress, useAnimation);
+ setProgress(progress, useAnimation);
}
public int getDisableAngle() {
<variable
name="pedTarget"
type="String" />
+ <variable
+ name="calorieValue"
+ type="String" />
</data>
<RelativeLayout
android:layout_centerInParent="true"
android:includeFontPadding="false"
android:paddingBottom="20dp"
- android:text="540"
+ android:text="@{pedNumber}"
android:textColor="@color/white"
android:textSize="42sp" />
android:layout_centerHorizontal="true"
android:layout_marginBottom="60dp"
android:drawableTop="@mipmap/icon_calorie_small"
- android:text="300.5 kcal"
+ android:text="@{calorieValue}"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold" />
-
+
</RelativeLayout>
</layout>
\ No newline at end of file