diff --git a/app/build.gradle b/app/build.gradle
index d87a22a..ee7f651 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -115,6 +115,10 @@ dependencies {
implementation 'com.github.samlss:ClockView:1.0'
implementation "com.ironsource.aura.oneadapter:oneadapter:1.2.0"
+
+ // Timber logging
+ implementation 'com.jakewharton.timber:timber:4.7.1'
+
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e04bdd2..e85cb36 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,7 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="clock.socoolby.com.clock">
-
-
+
-
+
+
-
+
+
+
+
+
+
+
+
@@ -64,5 +79,6 @@
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/clock/socoolby/com/clock/ActivateAdmin.java b/app/src/main/java/clock/socoolby/com/clock/ActivateAdmin.java
index 5d96a72..aa33ec4 100755
--- a/app/src/main/java/clock/socoolby/com/clock/ActivateAdmin.java
+++ b/app/src/main/java/clock/socoolby/com/clock/ActivateAdmin.java
@@ -1,7 +1,16 @@
package clock.socoolby.com.clock;
import android.app.admin.DeviceAdminReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import timber.log.Timber;
public class ActivateAdmin extends DeviceAdminReceiver {
+ @Override
+ public void onDisabled(Context context, Intent intent) {
+ super.onDisabled(context, intent);
+ Timber.d("Disabled lock device admin");
+ }
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/ClockApplication.java b/app/src/main/java/clock/socoolby/com/clock/ClockApplication.java
index 73da009..4a3028b 100755
--- a/app/src/main/java/clock/socoolby/com/clock/ClockApplication.java
+++ b/app/src/main/java/clock/socoolby/com/clock/ClockApplication.java
@@ -2,7 +2,6 @@ package clock.socoolby.com.clock;
import android.app.Application;
import android.content.Context;
-import android.util.Log;
import com.blankj.utilcode.constant.PermissionConstants;
import com.blankj.utilcode.util.PermissionUtils;
@@ -23,6 +22,7 @@ import clock.socoolby.com.clock.model.SharePerferenceModel;
import e.odbo.DB;
import e.odbo.data.dao.EntityManager;
import e.odbo.data.sample.security.NoScuritySupportManager;
+import timber.log.Timber;
public class ClockApplication extends Application {
@@ -41,6 +41,11 @@ public class ClockApplication extends Application {
public void onCreate() {
super.onCreate();
sEndzoneBoxApp = this;
+ if (BuildConfig.DEBUG) {
+ Timber.plant(new Timber.DebugTree());
+ } else {
+ Timber.plant(new CrashReportingTree());
+ }
Utils.init(this);
init();
initEnityManager();
@@ -51,13 +56,13 @@ public class ClockApplication extends Application {
WorkClockDatabase database=new WorkClockDatabase();
try {
localDB= SQLite.androidWithSQLDroid(this.getPackageName(),Constants.APP_NAME,null,null);
- Log.d("e","setup database start....");
+ timber.log.Timber.d("setup database start....");
localDB.setup(database);
}catch (BasicException e){
- Log.e("e","setup database false",e);
+ timber.log.Timber.e(e,"setup database false");
}
localDB.model(database);
- Log.d("e","start database end....");
+ timber.log.Timber.d("start database end....");
DBSession dbSession=(DBSession) localDB.getDbSession();
entityManager=new EntityManager(dbSession,new TableDBSentenceBuilder(dbSession,new NoScuritySupportManager()));
entityManager.addDaoToMap(new TimeFontStyleDao(dbSession));
@@ -75,12 +80,12 @@ public class ClockApplication extends Application {
}).callback(new PermissionUtils.SimpleCallback() {
@Override
public void onGranted() {
- Log.d("app","supported permission....");
+ Timber.d("supported permission....");
}
@Override
public void onDenied() {
- Log.d("app","supported permission denied...");
+ Timber.d("supported permission denied...");
}
}).request();
model = new SharePerferenceModel();
@@ -114,4 +119,10 @@ public class ClockApplication extends Application {
public EntityManager getEntityManager(){
return entityManager;
}
+
+ private static class CrashReportingTree extends Timber.Tree {
+ @Override
+ protected void log(int priority, String tag, String message, Throwable t) {
+ }
+ }
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/Constants.java b/app/src/main/java/clock/socoolby/com/clock/Constants.java
index b731447..ae822b9 100644
--- a/app/src/main/java/clock/socoolby/com/clock/Constants.java
+++ b/app/src/main/java/clock/socoolby/com/clock/Constants.java
@@ -14,4 +14,6 @@ public class Constants {
public final static String APP_MEMO="小提示: ←动画 →字体 ↑↓亮度 双指_字体大小 双击_切屏 长按_参数设置";
+ public static final Integer ACCESSIBILITY_SERVICE_REQUEST_CODE=101;
+
}
\ No newline at end of file
diff --git a/app/src/main/java/clock/socoolby/com/clock/MainActivity.java b/app/src/main/java/clock/socoolby/com/clock/MainActivity.java
index 85cbc57..1d9ab2e 100755
--- a/app/src/main/java/clock/socoolby/com/clock/MainActivity.java
+++ b/app/src/main/java/clock/socoolby/com/clock/MainActivity.java
@@ -4,7 +4,6 @@ package clock.socoolby.com.clock;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
-import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
@@ -17,7 +16,6 @@ import android.os.Bundle;
import android.provider.Settings;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
-import android.util.Log;
import android.view.Display;
import android.view.GestureDetector;
import android.view.KeyEvent;
@@ -67,6 +65,7 @@ import clock.socoolby.com.clock.model.SharePerferenceModel;
import clock.socoolby.com.clock.state.ClockInterfaceTypeEnum;
import clock.socoolby.com.clock.state.ClockThemeUITypeEnum;
import clock.socoolby.com.clock.todo.TodoSyncServiceManager;
+import clock.socoolby.com.clock.utils.DialogUtils;
import clock.socoolby.com.clock.viewmodel.AlterViewModel;
import clock.socoolby.com.clock.viewmodel.DigitViewModel;
import clock.socoolby.com.clock.viewmodel.GlobalViewModel;
@@ -105,8 +104,6 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
private SharePerferenceModel model;
- //private PowerManager.WakeLock localWakeLock = null;
-
public WeatherResponse weatherAdape;
private ClockStateMachine clockStateMachine;
@@ -136,8 +133,10 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
+
+ model = ((ClockApplication) getApplication()).getModel();
+
themeUIContainer = findViewById(R.id.main_background);
tv_background_image = findViewById(R.id.tv_background_image);
@@ -146,7 +145,6 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
if (PermissionUtils.isGranted("android.permission.WAKE_LOCK", "android.permission.DEVICE_POWER")) {
PowerManager powerManager = (PowerManager) this.getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.FULL_WAKE_LOCK | powerManager.ON_AFTER_RELEASE, "Clock");
- //localWakeLock = powerManager.newWakeLock(32, "MyPower");
} else
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -160,25 +158,27 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
spiritsManager.initContiner(findViewById(R.id.spirits_container),getSupportFragmentManager(),R.id.fragment_spine_container);
-
testSetup();
- //SqlScoutServer.create(this, getPackageName());
}
private boolean isPowerManagerDisable() {
return wakeLock == null;
}
+
private void setUpProximityService() {
- if (isPowerManagerDisable())
+ if (isPowerManagerDisable()&&Build.VERSION.SDK_INT < Build.VERSION_CODES.P)
return;
try {
if (isScreenLock()) {
stopService(proximityServiceIntent);
} else {
if (model.isTriggerScreen()) {
- startService(proximityServiceIntent);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ startForegroundService(proximityServiceIntent);
+ }else
+ startService(proximityServiceIntent);
} else {
stopService(proximityServiceIntent);
}
@@ -202,9 +202,8 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
}
private void init() {
- model = ((ClockApplication) getApplication()).getModel();
businessService= ((ClockApplication) getApplication()).getBusinessService();
- Log.d(TAG, "start model:" + model.toString());
+ timber.log.Timber.d("start model:" + model.toString());
proximityServiceIntent = new Intent(this, ProximityService.class);
@@ -222,14 +221,15 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
alterManager = new AlterManager(model.getStartHourPowerTime(), model.getStopHourPowerTime(), globalViewModel, ClockApplication.getInstance().getEntityManager());
todoSyncServiceManager = new TodoSyncServiceManager(this.getApplicationContext());
+ globalViewModel.setTodoSyncServiceManager(todoSyncServiceManager);
clockStateMachine = new ClockStateMachine(alterManager, globalViewModel, digitViewModel, simulateViewModel, themeUIViewModel, alterViewModel,todoSyncServiceManager);
-
- setUpProximityService();
-
- bindViewModel();
+ globalViewModel.setClockStateMachine(clockStateMachine);
themeUIManager = new ThemeUIManager(ClockApplication.getInstance().getEntityManager(), model,fontManager);
+ globalViewModel.setThemeUIManager(themeUIManager);
+
+ bindViewModel();
spiritsManager=new SpiritsManager(globalViewModel,digitViewModel,simulateViewModel,themeUIViewModel,alterViewModel);
@@ -286,16 +286,28 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
private void bindViewModel() {
+ globalViewModel.getUseSystemWallpaper().observe(this, new Observer() {
+ @Override
+ public void onChanged(Boolean aBoolean) {
+ if(aBoolean){
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
+ }else{
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
+ }
+ globalViewModel.checkSystemWallpaperSet();
+ }
+ });
+
globalViewModel.getClockInterfaceTypeEnum().observe(this, new Observer() {
@Override
public void onChanged(ClockInterfaceTypeEnum clockInterfaceTypeEnum) {
- Log.d(TAG,"comming in clockInterfaceTypeEnum change observe type:"+clockInterfaceTypeEnum.name());
+ timber.log.Timber.d("comming in clockInterfaceTypeEnum change observe type:"+clockInterfaceTypeEnum.name());
switch (clockInterfaceTypeEnum) {
case Digit:
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new DigitClockFragment(clockStateMachine)).commit();
+ getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new DigitClockFragment()).commit();
break;
case Simulate:
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new SimulateClockFragment(clockStateMachine)).commit();
+ getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new SimulateClockFragment()).commit();
break;
}
clockStateMachine.setCurrentInterfaceType(clockInterfaceTypeEnum);
@@ -315,7 +327,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
EventManger.addAlterListener(this,event->{
if(event.getValue()) {
closeAllConfigFragment();
- AbstractAlterFragment alterFragment = new AlterTodoDefaultFragment(clockStateMachine,todoSyncServiceManager.getTodayTodoEntities());
+ AbstractAlterFragment alterFragment = new AlterTodoDefaultFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, alterFragment).addToBackStack(null).commit();
}else
getSupportFragmentManager().popBackStack();
@@ -435,7 +447,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
});
EventManger.addHourAnimatorListener(this,event->{
- Log.d(TAG, "on hour animator changed: " + event.getValue());
+ timber.log.Timber.d("on hour animator changed: " + event.getValue());
if (event.getValue())
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, HourAnimatorFactory.builder(globalViewModel.getHourAlterTypeName().getValue(), globalViewModel.getTime_hour().getValue())).addToBackStack(null).commit();
else
@@ -443,18 +455,18 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
});
EventManger.addLongSleepWakeUpListener(this,event -> {
- Log.d(TAG, "on long sleep wake up: " + event.getValue());
+ timber.log.Timber.d("on long sleep wake up: " + event.getValue());
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, HourAnimatorFactory.builder(FishAnimator.NAME, event.getValue())).addToBackStack(null).commit();
});
EventManger.addNewDayListener(this,event -> {
- Log.d(TAG, "new day comming: " + event.getValue().getDateString());
+ timber.log.Timber.d("new day comming: " + event.getValue().getDateString());
businessService.getWeather(model.getCity(), new RequestListener() {
@Override
public void onResponse(WeatherResponse weather) {
if (weather == null)
return;
- Log.d(TAG, "set Weather ...");
+ timber.log.Timber.d("set Weather ...");
weatherAdape = weather;
if (weather.getTodayWeather() != null)
themeUIViewModel.getWeatherDescription().setValue(weather.getTodayWeather().weather + "/" + weather.getTodayWeather().temperature);
@@ -463,7 +475,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
@Override
public void onRequestFailed(int error, String errorMessage) {
- Log.d(TAG, "get Weather false:"+errorMessage);
+ timber.log.Timber.d("get Weather false:"+errorMessage);
}
});
});
@@ -477,6 +489,13 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
todoSyncServiceManager.stop();
}
});
+
+ globalViewModel.getTriggerScreen().observe(this, new Observer() {
+ @Override
+ public void onChanged(Boolean aBoolean) {
+ setUpProximityService();
+ }
+ });
}
@@ -538,7 +557,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
@Override
protected void onPause() {
super.onPause();
- //Log.d(TAG,"onPause..");
+ //timber.log.Timber.d("onPause..");
if (!isPowerManagerDisable())
wakeLock.release();
if (backGroundAnimator != null)
@@ -570,7 +589,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
// 如果裁剪并压缩了,以取压缩路径为准,因为是先裁剪后压缩的
globalViewModel.setBackgroundImageUri(Uri.parse(selectList.get(0).getPath()));
- globalViewModel.getBackgroundImageVisable().setValue(true);
+ globalViewModel.setBackgroundImageVisable(true);
break;
case PictureConfig.TYPE_VIDEO:
selectList = PictureSelector.obtainMultipleResult(data);
@@ -622,19 +641,11 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
return true;
}
if (!isFullScreen()) {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setIcon(android.R.drawable.ic_dialog_info);
- builder.setTitle("温馨提示");
- builder.setMessage("确定要退出吗");
- builder.setCancelable(true);
-
- builder.setPositiveButton("确定", (dialog, which) -> {
- MainActivity.this.finish();
+ DialogUtils.show(this,"温馨提示","确定要退出吗",ok->{
+ if(ok){
+ MainActivity.this.finish();
+ }
});
- builder.setNegativeButton("取消", (dialog, which) -> {
- dialog.dismiss();
- });
- builder.create().show();
}
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
return true;
@@ -645,7 +656,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
}
public void setup() {
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_config_container, new SystemAppConfigFragment(model)).addToBackStack(null).commit();
+ getSupportFragmentManager().beginTransaction().replace(R.id.fragment_config_container, new SystemAppConfigFragment()).addToBackStack(null).commit();
}
@Override
@@ -701,10 +712,10 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
return;
switch (globalViewModel.getClockInterfaceTypeEnum().getValue()) {
case Digit:
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_config_container, new DigitClockConfigFragment(themeUIManager)).addToBackStack(null).commit();
+ getSupportFragmentManager().beginTransaction().replace(R.id.fragment_config_container, new DigitClockConfigFragment()).addToBackStack(null).commit();
break;
case Simulate:
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_config_container, new SimulateClockConfigFragment(themeUIManager)).addToBackStack(null).commit();
+ getSupportFragmentManager().beginTransaction().replace(R.id.fragment_config_container, new SimulateClockConfigFragment()).addToBackStack(null).commit();
break;
}
}
@@ -750,7 +761,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
if(isScreenLockWithPassword())
return true;
- Log.d(TAG, "onFling");
+ timber.log.Timber.d("onFling");
int brightness = globalViewModel.getBrightness().getValue();
@@ -758,7 +769,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
calcFilingFlag();
if (e2.getY() - e1.getY() < -flingHeight) { // 从上至下
- Log.d(TAG, "change brightness +10");
+ timber.log.Timber.d("change brightness +10");
brightness = brightness + 10;
if (brightness >= 255) {
Toast.makeText(this, "最大亮度了", Toast.LENGTH_SHORT).show();
@@ -767,7 +778,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
globalViewModel.getBrightness().setValue(brightness);
return true;
} else if (e2.getY() - e1.getY() > flingHeight) { // 从下至上
- Log.d(TAG, "change brightness -10");
+ timber.log.Timber.d("change brightness -10");
brightness = brightness - 10;
if (brightness <= 0) {
Toast.makeText(this, "最小亮度了", Toast.LENGTH_SHORT).show();
@@ -776,7 +787,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
globalViewModel.getBrightness().setValue(brightness);
return true;
} else if (e2.getX() - e1.getX() > flingWidth) { // 从左向右滑动(左进右出)
- Log.d(TAG, "left->right");
+ timber.log.Timber.d("left->right");
if (globalViewModel.getClockInterfaceTypeEnum().getValue() == ClockInterfaceTypeEnum.Simulate) {
simulateViewModel.setClockTypeName(ClockFactory.nextSimulateClockName(simulateViewModel.getClockTypeName().getValue()));
return true;
@@ -818,7 +829,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
public boolean onScaleBegin(ScaleGestureDetector detector) {
if(isScreenLockWithPassword())
return false;
- Log.d(TAG, "onScaleBegin ");
+ timber.log.Timber.d("onScaleBegin ");
scaleSpan = detector.getCurrentSpan();
currentFontSize=digitViewModel.getTimeFontStyleSize().getValue();
//maxFontSize = fontManager.getMaxFontSize(model.isDisplaySecond());
@@ -833,7 +844,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
currentFontSize = currentFontSize + step;
- Log.d(TAG, "onScaleEnd span:" + span + "\t step:" + step + "\tcurrent text size" + currentFontSize);
+ timber.log.Timber.d("onScaleEnd span:" + span + "\t step:" + step + "\tcurrent text size" + currentFontSize);
digitViewModel.setTimeFontStyleSize(currentFontSize);
@@ -901,7 +912,7 @@ public class MainActivity extends AppCompatActivity implements android.view.Ges
display.getSize(outSize);
flingWidth=outSize.x/3;
flingHeight =outSize.y/3;
- //Log.d(TAG,"calc filing flag flingWidth:"+flingWidth+"\tflingHeight"+flingHeight);
+ //timber.log.Timber.d("calc filing flag flingWidth:"+flingWidth+"\tflingHeight"+flingHeight);
}
@Override
diff --git a/app/src/main/java/clock/socoolby/com/clock/SettingActivity.java b/app/src/main/java/clock/socoolby/com/clock/SettingActivity.java
index 298f8e3..3293dd1 100755
--- a/app/src/main/java/clock/socoolby/com/clock/SettingActivity.java
+++ b/app/src/main/java/clock/socoolby/com/clock/SettingActivity.java
@@ -34,6 +34,7 @@ public class SettingActivity extends AppCompatActivity implements View.OnClickLi
private SharePerferenceModel model;
+ CheckBox triggerSystemWallpaper;
@Override
@@ -69,6 +70,16 @@ public class SettingActivity extends AppCompatActivity implements View.OnClickLi
}
});
+ /*triggerSystemWallpaper = (CheckBox) findViewById(R.id.cb_trigger_system_wallpaper);
+ cb_trigger_screen.setChecked(model.isTriggerScreen());
+ cb_trigger_screen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ model.setTriggerScreen(isChecked);
+ }
+ });*/
+
+
Button btn_uninstall = (Button) findViewById(R.id.btn_uninstall);
btn_uninstall.setOnClickListener(this);
Button btn_about = (Button) findViewById(R.id.btn_about);
diff --git a/app/src/main/java/clock/socoolby/com/clock/SpiritsManager.java b/app/src/main/java/clock/socoolby/com/clock/SpiritsManager.java
index e126194..7436427 100644
--- a/app/src/main/java/clock/socoolby/com/clock/SpiritsManager.java
+++ b/app/src/main/java/clock/socoolby/com/clock/SpiritsManager.java
@@ -130,7 +130,7 @@ public class SpiritsManager implements DragFrameLayout.OnDragDropListener {
demo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Log.d(TAG,"demo Button clicked");
+ timber.log.Timber.d("demo Button clicked");
}
});
layout.addDragChildView(demo,10,20);*/
@@ -143,16 +143,16 @@ public class SpiritsManager implements DragFrameLayout.OnDragDropListener {
@Override
public void onDragStart(View view) {
- Log.d(TAG,"onDragStart view:"+view.getId());
+ timber.log.Timber.d("onDragStart view:"+view.getId());
}
@Override
public void ontDraging(View view) {
- Log.d(TAG,"onDraging view:"+view.getId());
+ timber.log.Timber.d("onDraging view:"+view.getId());
}
@Override
public void onDragEnd(View view,int left,int top) {
- Log.d(TAG,"onDragEnd view is demo:"+(view==demo)+"\t left padding:"+left+"\t top padding:"+top);
+ timber.log.Timber.d("onDragEnd view is demo:"+(view==demo)+"\t left padding:"+left+"\t top padding:"+top);
}
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/ThemeUIManager.java b/app/src/main/java/clock/socoolby/com/clock/ThemeUIManager.java
index 932ac92..b1d60c7 100644
--- a/app/src/main/java/clock/socoolby/com/clock/ThemeUIManager.java
+++ b/app/src/main/java/clock/socoolby/com/clock/ThemeUIManager.java
@@ -145,7 +145,7 @@ public class ThemeUIManager{
}
public void saveTempThemeUI(int type){
- Log.d(TAG,"save temp ThemeUI type:"+type);
+ timber.log.Timber.d("save temp ThemeUI type:"+type);
if(type==ClockInterfaceTypeEnum.Digit.code)
this.tempThemeStr=makeSaveDigitThemeString(model.getDigitPerferenceModel());
else
@@ -153,7 +153,7 @@ public class ThemeUIManager{
}
public void recoverTempThemeUI(int type)throws BasicException{
- Log.d(TAG,"recover temp ThemeUI type"+type);
+ timber.log.Timber.d("recover temp ThemeUI type"+type);
if(tempThemeStr==null)
return;
if(type==ClockInterfaceTypeEnum.Digit.code) {
diff --git a/app/src/main/java/clock/socoolby/com/clock/event/EventManger.java b/app/src/main/java/clock/socoolby/com/clock/event/EventManger.java
index af39e70..b5c0173 100644
--- a/app/src/main/java/clock/socoolby/com/clock/event/EventManger.java
+++ b/app/src/main/java/clock/socoolby/com/clock/event/EventManger.java
@@ -61,7 +61,7 @@ public class EventManger {
public static void removeClockEventListener(EventListenerHandle handle){
if(liveEventBus==null)
init();
- Log.d(TAG, "removeClockEventListener: "+handle.getEventType());
+ timber.log.Timber.d("removeClockEventListener: "+handle.getEventType());
liveEventBus.with(handle.getEventType(),handle.getValueClass()).removeObserver(handle.getHandle());
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AbstractAlterFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AbstractAlterFragment.java
index 87d9d5f..93d5f4a 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AbstractAlterFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AbstractAlterFragment.java
@@ -26,8 +26,7 @@ public abstract class AbstractAlterFragment extends Fragment {
int view_id;
- public AbstractAlterFragment(ClockStateMachine clockStateMachine, int view_id) {
- this.clockStateMachine=clockStateMachine;
+ public AbstractAlterFragment( int view_id) {
this.view_id=view_id;
}
@@ -36,6 +35,7 @@ public abstract class AbstractAlterFragment extends Fragment {
super.onCreate(savedInstanceState);
globalViewModel= ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
alterViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(AlterViewModel.class);
+ clockStateMachine=globalViewModel.getClockStateMachine();
}
@Override
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AlterTodoDefaultFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AlterTodoDefaultFragment.java
index fc5abc1..704565b 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AlterTodoDefaultFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/alter/AlterTodoDefaultFragment.java
@@ -1,5 +1,6 @@
package clock.socoolby.com.clock.fragment.alter;
+import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
@@ -44,10 +45,14 @@ public class AlterTodoDefaultFragment extends AbstractAlterFragment {
TodoEntity currentTodoEntity;
private OneAdapter todoAdapter;
+ public AlterTodoDefaultFragment() {
+ super(R.layout.fragment_alter_todo);
+ }
- public AlterTodoDefaultFragment(ClockStateMachine clockStateMachine, List todayTodoList) {
- super(clockStateMachine, R.layout.fragment_alter_todo);
- this.todayTodoList=todayTodoList;
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ todayTodoList=globalViewModel.getTodoSyncServiceManager().getTodayTodoEntities();
currentTodoEntity=clockStateMachine.getCurrentTodoEntity();
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockConfigFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockConfigFragment.java
index 30cefbe..ba4d68b 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockConfigFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockConfigFragment.java
@@ -140,8 +140,8 @@ public class DigitClockConfigFragment extends Fragment {
@BindView(R.id.tv_time_text_basline_x)
VerticalRangeSeekBar tvTimeTextBaslineX;
- public DigitClockConfigFragment(ThemeUIManager themeUIManager) {
- this.themeUIManager = themeUIManager;
+ public DigitClockConfigFragment(){
+
}
@Override
@@ -150,6 +150,7 @@ public class DigitClockConfigFragment extends Fragment {
globalViewModel = ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
digitViewModel = ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(DigitViewModel.class);
themeUIViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(ThemeUIViewModel.class);
+ themeUIManager=globalViewModel.getThemeUIManager();
themeUIManager.saveTempThemeUI(ClockInterfaceTypeEnum.Digit.code);
globalViewModel.setAppConfig(true);
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockFragment.java
index fdea51e..b0a92c3 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/digit/DigitClockFragment.java
@@ -34,8 +34,8 @@ public class DigitClockFragment extends Fragment {
public static final String TAG=DigitClockFragment.class.getName();
public ClockStateMachine clockStateMachine;
- public DigitClockFragment(ClockStateMachine clockStateMachine) {
- this.clockStateMachine=clockStateMachine;
+ public DigitClockFragment(){
+
}
DigitViewModel digitViewModel;
@@ -50,6 +50,7 @@ public class DigitClockFragment extends Fragment {
super.onCreate(savedInstanceState);
digitViewModel= ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(DigitViewModel.class);
globalViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
+ clockStateMachine=globalViewModel.getClockStateMachine();
}
@Override
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpFragment.java
index d74c0aa..3385057 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpFragment.java
@@ -26,8 +26,7 @@ public abstract class AbstractHandUpFragment extends Fragment {
int view_id;
- public AbstractHandUpFragment(ClockStateMachine clockStateMachine, int view_id) {
- this.clockStateMachine=clockStateMachine;
+ public AbstractHandUpFragment(int view_id) {
this.view_id=view_id;
}
@@ -36,6 +35,7 @@ public abstract class AbstractHandUpFragment extends Fragment {
super.onCreate(savedInstanceState);
globalViewModel= ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
alterViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(AlterViewModel.class);
+ clockStateMachine=globalViewModel.getClockStateMachine();
}
@Override
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpSelectFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpSelectFragment.java
index ef263ac..cb35c94 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpSelectFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/AbstractHandUpSelectFragment.java
@@ -5,8 +5,8 @@ import clock.socoolby.com.clock.state.ClockStateMachine;
public abstract class AbstractHandUpSelectFragment extends AbstractHandUpFragment {
- public AbstractHandUpSelectFragment(ClockStateMachine clockStateMachine, int view_id) {
- super(clockStateMachine, view_id);
+ public AbstractHandUpSelectFragment( int view_id) {
+ super( view_id);
}
protected void selected(){
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpDefaultFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpDefaultFragment.java
index a5a2c07..f625b4d 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpDefaultFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpDefaultFragment.java
@@ -26,8 +26,8 @@ public class HandUpDefaultFragment extends AbstractHandUpFragment {
private int handUPDialy=0;
- public HandUpDefaultFragment(ClockStateMachine clockStateMachine) {
- super(clockStateMachine,R.layout.fragment_handup);
+ public HandUpDefaultFragment() {
+ super(R.layout.fragment_handup);
}
@Override
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpFragmentFactory.java b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpFragmentFactory.java
index 9706be5..c9b5ba7 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpFragmentFactory.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpFragmentFactory.java
@@ -7,9 +7,9 @@ public final class HandUpFragmentFactory {
public static AbstractHandUpFragment build(String name, ClockStateMachine clockStateMachine){
switch (name){
case HandUpSelect123Fragment.NAME:
- return new HandUpSelect123Fragment(clockStateMachine);
+ return new HandUpSelect123Fragment();
}
- return new HandUpDefaultFragment(clockStateMachine);
+ return new HandUpDefaultFragment();
}
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpSelect123Fragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpSelect123Fragment.java
index e69512e..21f09e1 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpSelect123Fragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/handup/HandUpSelect123Fragment.java
@@ -30,8 +30,8 @@ public class HandUpSelect123Fragment extends AbstractHandUpSelectFragment implem
EventListenerHandle heartBeatListenerHandle;
- public HandUpSelect123Fragment(ClockStateMachine clockStateMachine) {
- super(clockStateMachine, R.layout.fragment_handup_select_123);
+ public HandUpSelect123Fragment() {
+ super( R.layout.fragment_handup_select_123);
}
@Override
@@ -42,7 +42,6 @@ public class HandUpSelect123Fragment extends AbstractHandUpSelectFragment implem
selectButton2.setOnClickListener(this);
selectButton3=rootView.findViewById(R.id.tv_select_button3);
selectButton3.setOnClickListener(this);
-
}
@@ -66,7 +65,7 @@ public class HandUpSelect123Fragment extends AbstractHandUpSelectFragment implem
heartBeatListenerHandle=EventManger.addHeartbeatListener(new ClockEventListener() {
@Override
public void onEvent(ClockEvent event) {
- Log.d(TAG, "onEvent: "+event.getEventType()+"\troundLoop:"+roundLoop);
+ timber.log.Timber.d("onEvent: "+event.getEventType()+"\troundLoop:"+roundLoop);
if(roundLoop==0) {
setButtonColor(rundomButton);
EventManger.removeClockEventListener(heartBeatListenerHandle);
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/houranimator/HourVideoFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/houranimator/HourVideoFragment.java
index 1917285..76110d2 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/houranimator/HourVideoFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/houranimator/HourVideoFragment.java
@@ -25,6 +25,11 @@ public class HourVideoFragment extends AbstractVideoFragment {
protected GlobalViewModel globalViewModel;
+ public HourVideoFragment(){
+ super();
+ this.hour=0;
+ }
+
public HourVideoFragment(int hour) {
super();
this.hour=hour;
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockConfigFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockConfigFragment.java
index f4eddbd..1e077f0 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockConfigFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockConfigFragment.java
@@ -106,8 +106,8 @@ public class SimulateClockConfigFragment extends Fragment {
private ColorPickerPop colorPickerDialog;
- public SimulateClockConfigFragment(ThemeUIManager themeUIManager) {
- this.themeUIManager = themeUIManager;
+ public SimulateClockConfigFragment(){
+
}
@Override
@@ -116,6 +116,7 @@ public class SimulateClockConfigFragment extends Fragment {
globalViewModel = ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
simulateViewModel = ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(SimulateViewModel.class);
themeUIViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(ThemeUIViewModel.class);
+ themeUIManager=globalViewModel.getThemeUIManager();
themeUIManager.saveTempThemeUI(ClockInterfaceTypeEnum.Simulate.code);
globalViewModel.setAppConfig(true);
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockFragment.java
index 3ff549b..23e3e42 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/simulate/SimulateClockFragment.java
@@ -40,8 +40,7 @@ public class SimulateClockFragment extends Fragment {
ClockStateMachine clockStateMachine;
- public SimulateClockFragment(ClockStateMachine clockStateMachine) {
- this.clockStateMachine=clockStateMachine;
+ public SimulateClockFragment(){
}
@Override
@@ -50,6 +49,7 @@ public class SimulateClockFragment extends Fragment {
clockAnimator = new ClockAnimator();
simulateViewModel= ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(SimulateViewModel.class);
globalViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
+ clockStateMachine=globalViewModel.getClockStateMachine();
}
@Override
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/spine/LibgdxSpineFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/spine/LibgdxSpineFragment.java
index 491e788..ff7ac8d 100755
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/spine/LibgdxSpineFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/spine/LibgdxSpineFragment.java
@@ -50,7 +50,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void preDestory(){
if (openDEBUGLog)
- Log.d(TAG, "preDestory");
+ timber.log.Timber.d("preDestory");
if (!m_hasBuilt)
return;
@@ -73,7 +73,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (openDEBUGLog)
- Log.d(TAG, "onCreateView");
+ timber.log.Timber.d("onCreateView");
m_viewRooter = (ViewGroup) inflater.inflate(R.layout.fragment_spine, container,false);
return m_viewRooter;
@@ -83,7 +83,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
if (openDEBUGLog)
- Log.d(TAG, "onViewCreated");
+ timber.log.Timber.d("onViewCreated");
super.onViewCreated(view, savedInstanceState);
buildGDX();
@@ -91,7 +91,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void buildGDX(){
if (openDEBUGLog)
- Log.d(TAG, "buildGDX");
+ timber.log.Timber.d("buildGDX");
spineEffectView = SpineFactory.build(spineType);
m_viewRooter.addView(CreateGLAlpha(spineEffectView));
@@ -108,7 +108,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void onStart() {
if (openDEBUGLog)
- Log.d(TAG, "onStart");
+ timber.log.Timber.d("onStart");
m_isStoping = false;
super.onStart();
@@ -121,7 +121,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void onStop() {
if (openDEBUGLog)
- Log.d(TAG, "onStop");
+ timber.log.Timber.d("onStop");
m_isStoping = true;
spineEffectView.setCanDraw(false);
@@ -132,7 +132,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void onResume() {
if (openDEBUGLog)
- Log.d(TAG, "onResume");
+ timber.log.Timber.d("onResume");
super.onResume();
@@ -148,7 +148,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public void onPause() {
if (openDEBUGLog)
- Log.d(TAG, "onPause");
+ timber.log.Timber.d("onPause");
if (spineEffectView != null) {
spineEffectView.forceOver();
@@ -165,7 +165,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
@Override
public void onConfigurationChanged(Configuration config) {
if (openDEBUGLog)
- Log.d(TAG, "onConfigurationChanged");
+ timber.log.Timber.d("onConfigurationChanged");
super.onConfigurationChanged(config);
m_viewRooter.removeAllViews();
buildGDX();
@@ -175,7 +175,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
private View CreateGLAlpha(ApplicationListener application) {
if (openDEBUGLog)
- Log.d(TAG, "CreateGLAlpha");
+ timber.log.Timber.d("CreateGLAlpha");
// GLSurfaceView透明相关
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
@@ -219,7 +219,7 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
public boolean keyDown(int i) {
if (openDEBUGLog)
- Log.d(TAG, "keyDown");
+ timber.log.Timber.d("keyDown");
return false;
}
@@ -238,19 +238,19 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
- Log.d(TAG, "touchDown screenX:"+screenX+"\t screenY:"+screenY+"\tpointer:"+pointer+"\tbutton:"+button);
+ timber.log.Timber.d("touchDown screenX:"+screenX+"\t screenY:"+screenY+"\tpointer:"+pointer+"\tbutton:"+button);
if(spineEffectView.isContainsPoint(screenX,screenY)) {
setInterruptTouch(true);
touchSpine = spineEffectView;
- Log.d(TAG,"find spine in touch down");
+ timber.log.Timber.d("find spine in touch down");
}
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
- Log.d(TAG, "touchUp screenX:"+screenX+"\t screenY:"+screenY+"\tpointer:"+pointer+"\tbutton:"+button);
+ timber.log.Timber.d("touchUp screenX:"+screenX+"\t screenY:"+screenY+"\tpointer:"+pointer+"\tbutton:"+button);
if(touchSpine!=null) {
touchSpine.setAction(ActionEnum.IDLE);
setInterruptTouch(false);
@@ -261,24 +261,24 @@ public class LibgdxSpineFragment extends AndroidFragmentApplication implements I
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
- Log.d(TAG, "touchDragged x:"+screenX+"\t y:"+screenY+"\ti2:"+pointer);
+ timber.log.Timber.d("touchDragged x:"+screenX+"\t y:"+screenY+"\ti2:"+pointer);
if(touchSpine!=null) {
touchSpine.setPosition(screenX,screenY);
touchSpine.setAction(ActionEnum.RUN);
- //Log.d(TAG, "touchDragged spine");
+ //timber.log.Timber.d("touchDragged spine");
}
return false;
}
@Override
public boolean mouseMoved(int x, int y) {
- Log.d(TAG, "mouseMoved x:"+x+"\t y:"+y);
+ timber.log.Timber.d("mouseMoved x:"+x+"\t y:"+y);
return false;
}
@Override
public boolean scrolled(int amount) {
- Log.d(TAG, "mouseMoved amount:"+amount);
+ timber.log.Timber.d("mouseMoved amount:"+amount);
return false;
}
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/system/SystemAppConfigFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/system/SystemAppConfigFragment.java
index 465a094..2327a4c 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/system/SystemAppConfigFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/system/SystemAppConfigFragment.java
@@ -2,12 +2,16 @@ package clock.socoolby.com.clock.fragment.system;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
@@ -26,11 +30,16 @@ import clock.socoolby.com.clock.AboutActivity;
import clock.socoolby.com.clock.ActivateAdmin;
import clock.socoolby.com.clock.ClockApplication;
import clock.socoolby.com.clock.Constants;
+import clock.socoolby.com.clock.MainActivity;
import clock.socoolby.com.clock.R;
import clock.socoolby.com.clock.fragment.houranimator.HourAnimatorFactory;
import clock.socoolby.com.clock.fragment.houranimator.HourVideoFragment;
import clock.socoolby.com.clock.model.DateModel;
import clock.socoolby.com.clock.model.SharePerferenceModel;
+import clock.socoolby.com.clock.net.auth.AuthCallback;
+import clock.socoolby.com.clock.todo.TodoSyncServiceManager;
+import clock.socoolby.com.clock.todo.microsoft.MicrosoftTodoSyncServiceImpl;
+import clock.socoolby.com.clock.utils.DialogUtils;
import clock.socoolby.com.clock.utils.FuncUnit;
import clock.socoolby.com.clock.viewmodel.AlterViewModel;
import clock.socoolby.com.clock.viewmodel.GlobalViewModel;
@@ -80,10 +89,12 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
CheckBox cb_todo_sync_able;
+ CheckBox cb_trigger_system_wallpaper;
+
private SharePerferenceModel model;
- public SystemAppConfigFragment(SharePerferenceModel model) {
- this.model = model;
+ public SystemAppConfigFragment() {
+
}
@Override
@@ -92,6 +103,7 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
this.globalViewModel = ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(GlobalViewModel.class);
alterViewModel=ViewModelProviders.of(getActivity(), new ViewModelFactory(ClockApplication.getInstance().getModel())).get(AlterViewModel.class);
globalViewModel.setAppConfig(true);
+ model=ClockApplication.getInstance().getModel();
}
@@ -116,7 +128,6 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
rg_clock_hour_video=themeRootView.findViewById(R.id.rg_clock_hour_video);
btn_clock_hour_video=themeRootView.findViewById(R.id.btn_clock_hour_video);
-
cb_boot_start=themeRootView.findViewById(R.id.cb_boot_start);
cb_tick = themeRootView.findViewById(R.id.cb_tick);
@@ -131,6 +142,8 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
cb_fullscreen_spirit=themeRootView.findViewById(R.id.cb_fullscreen_spirit);
cb_todo_sync_able=themeRootView.findViewById(R.id.cb_todo_alter_able);
+ cb_trigger_system_wallpaper=themeRootView.findViewById(R.id.cb_trigger_system_wallpaper);
+
loadDataFromModel();
btn_about.setOnClickListener(this);
@@ -140,6 +153,20 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
cb_trigger_screen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ if(isChecked) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ AccessibilityManager manager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
+ if (!manager.isEnabled()) {
+ DialogUtils.show(getContext(),"提醒","当前功能须要开启补助功能,是不前往。", ok->{
+ if(ok){
+ getActivity().startActivityForResult(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS), Constants.ACCESSIBILITY_SERVICE_REQUEST_CODE);
+ }
+ });
+ cb_trigger_screen.setChecked(false);
+ return;
+ }
+ }
+ }
model.setTriggerScreen(isChecked);
}
});
@@ -218,10 +245,37 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
}
});
+ cb_trigger_system_wallpaper.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ model.setUseSystemWallpaper(isChecked);
+ }
+ });
+
cb_todo_sync_able.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- globalViewModel.setTodoSyncAble(isChecked);
+ if(isChecked){
+ TodoSyncServiceManager todoSyncServiceManager=globalViewModel.getTodoSyncServiceManager();
+ todoSyncServiceManager.start();
+ todoSyncServiceManager.singIn(MicrosoftTodoSyncServiceImpl.NAME, getActivity(), new AuthCallback() {
+ @Override
+ public void onSuccess() {
+ globalViewModel.setTodoSyncAble(true);
+ }
+
+ @Override
+ public void onError(Exception exception) {
+ cb_todo_sync_able.setChecked(false);
+ }
+
+ @Override
+ public void onCancel() {
+ cb_todo_sync_able.setChecked(false);
+ }
+ });
+ }else
+ globalViewModel.setTodoSyncAble(false);
}
});
@@ -289,6 +343,8 @@ public class SystemAppConfigFragment extends Fragment implements View.OnClickLi
cb_fullscreen_spirit.setChecked(model.isFullscreenSpiritAble());
cb_todo_sync_able.setChecked(model.isTodoSyncAble());
+
+ cb_trigger_system_wallpaper.setChecked(model.isUseSystemWallpaper());
}
private void saveToModel() {
diff --git a/app/src/main/java/clock/socoolby/com/clock/fragment/theme/AbstractThemeUIFragment.java b/app/src/main/java/clock/socoolby/com/clock/fragment/theme/AbstractThemeUIFragment.java
index c9e6550..cb46b11 100644
--- a/app/src/main/java/clock/socoolby/com/clock/fragment/theme/AbstractThemeUIFragment.java
+++ b/app/src/main/java/clock/socoolby/com/clock/fragment/theme/AbstractThemeUIFragment.java
@@ -33,6 +33,7 @@ import clock.socoolby.com.clock.pop.WeatherPopup;
import clock.socoolby.com.clock.state.ClockInterfaceTypeEnum;
import clock.socoolby.com.clock.state.ClockThemeUITypeEnum;
import clock.socoolby.com.clock.state.ClockTimeTypeEnum;
+import clock.socoolby.com.clock.utils.DialogUtils;
import clock.socoolby.com.clock.viewmodel.AlterViewModel;
import clock.socoolby.com.clock.viewmodel.DigitViewModel;
import clock.socoolby.com.clock.viewmodel.GlobalViewModel;
@@ -40,6 +41,7 @@ import clock.socoolby.com.clock.viewmodel.SimulateViewModel;
import clock.socoolby.com.clock.viewmodel.ThemeUIViewModel;
import clock.socoolby.com.clock.viewmodel.ViewModelFactory;
import clock.socoolby.com.clock.widget.textview.AutoScrollTextView;
+import timber.log.Timber;
public abstract class AbstractThemeUIFragment extends Fragment implements View.OnClickListener {
@@ -118,7 +120,18 @@ public abstract class AbstractThemeUIFragment extends Fragment implements View.O
tv_background_image_hand.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
- mainActivity.configBackGroundImage();
+ if(model.isUseSystemWallpaper()){
+ DialogUtils.show(getActivity(), getString(R.string.system_wallpaper), getString(R.string.logut_system_wallpaper_mode), new DialogUtils.OkCancelSelectedLinstener() {
+ @Override
+ public void onReturn(boolean ok) {
+ if(ok) {
+ globalViewModel.setUseSystemWallpaper(false);
+ mainActivity.configBackGroundImage();
+ }
+ }
+ });
+ }else
+ mainActivity.configBackGroundImage();
return true;
}
});
@@ -283,7 +296,7 @@ public abstract class AbstractThemeUIFragment extends Fragment implements View.O
timer.cancel();
}
running=true;
- Log.d("themeUiManager","autoFullScreen task created ...");
+ Timber.d("autoFullScreen task created ...");
timer.schedule(new TimerTask() {
public void run() {
themeUIViewModel.setClockUITypeEnum(ClockThemeUITypeEnum.FULLSCREEN);
@@ -433,7 +446,7 @@ public abstract class AbstractThemeUIFragment extends Fragment implements View.O
hour=saveHandUpTime/60;
minute=saveHandUpTime-hour*60;
}
- Log.d(TAG, "switch HandUpTime:" + saveHandUpTime+"\thour:"+hour+"\tminute:"+minute);
+ timber.log.Timber.d("switch HandUpTime:" + saveHandUpTime+"\thour:"+hour+"\tminute:"+minute);
handUpTimePopup1.init(hour,minute,globalViewModel.getHandUpTypeName().getValue(),alterViewModel.getHandUpMusic().getValue(),alterViewModel.getHandUpMusicName().getValue());
handUpTimePopup1.showNow(getFragmentManager(),null);
}
@@ -570,26 +583,52 @@ public abstract class AbstractThemeUIFragment extends Fragment implements View.O
setDiscript(FamousQuotesManager.roundAutoQuotes());
break;
case R.id.tv_background_color:
- if (colorPickerDialog == null)
- colorPickerDialog = new ColorPickerPop(mainActivity);
+ if(model.isUseSystemWallpaper()){
+ DialogUtils.show(getActivity(), getString(R.string.system_wallpaper), getString(R.string.logut_system_wallpaper_mode), new DialogUtils.OkCancelSelectedLinstener() {
+ @Override
+ public void onReturn(boolean ok) {
+ if(ok) {
+ globalViewModel.setUseSystemWallpaper(false);
+ }
+ }
+ });
+ }else {
+ if (colorPickerDialog == null)
+ colorPickerDialog = new ColorPickerPop(mainActivity);
- colorPickerDialog.setOnColorChangeListenter(new ColorPickerPop.OnColorListener() {
- @Override
- public void onEnsure(int color) {
- globalViewModel.setBackgroundColor(color);
- }
+ colorPickerDialog.setOnColorChangeListenter(new ColorPickerPop.OnColorListener() {
+ @Override
+ public void onEnsure(int color) {
+ globalViewModel.setBackgroundColor(color);
+ }
- @Override
- public void onBack() {
- }
- });
- colorPickerDialog.show(model.getBackgroundColor());
+ @Override
+ public void onBack() {
+ }
+ });
+ colorPickerDialog.show(model.getBackgroundColor());
+ }
break;
case R.id.tv_background_image_hand:
- if (globalViewModel.getBackgroundImageUri().getValue() == null)
- mainActivity.configBackGroundImage();
- else
- globalViewModel.setBackgroundImageVisable(!globalViewModel.getBackgroundImageVisable().getValue());
+ if(model.isUseSystemWallpaper()){
+ DialogUtils.show(getActivity(), getString(R.string.system_wallpaper), getString(R.string.logut_system_wallpaper_mode), new DialogUtils.OkCancelSelectedLinstener() {
+ @Override
+ public void onReturn(boolean ok) {
+ if(ok) {
+ globalViewModel.setUseSystemWallpaper(false);
+ if (globalViewModel.getBackgroundImageUri().getValue() == null)
+ mainActivity.configBackGroundImage();
+ else
+ globalViewModel.setBackgroundImageVisable(true);
+ }
+ }
+ });
+ }else {
+ if (globalViewModel.getBackgroundImageUri().getValue() == null)
+ mainActivity.configBackGroundImage();
+ else
+ globalViewModel.setBackgroundImageVisable(!globalViewModel.getBackgroundImageVisable().getValue());
+ }
break;
case R.id.tv_foreground_color:
globalViewModel.setForegroundColor(model.getForegroundColor1());
@@ -638,7 +677,7 @@ public abstract class AbstractThemeUIFragment extends Fragment implements View.O
private void switchMode(ClockThemeUITypeEnum mode) {
- Log.d(TAG, "switch mode to:" + mode);
+ timber.log.Timber.d("switch mode to:" + mode);
switch (mode) {
case FULLSCREEN:
tv_date.setVisibility(View.GONE);
diff --git a/app/src/main/java/clock/socoolby/com/clock/model/SharePerferenceModel.java b/app/src/main/java/clock/socoolby/com/clock/model/SharePerferenceModel.java
index 0866827..19c52be 100755
--- a/app/src/main/java/clock/socoolby/com/clock/model/SharePerferenceModel.java
+++ b/app/src/main/java/clock/socoolby/com/clock/model/SharePerferenceModel.java
@@ -13,8 +13,6 @@ import clock.socoolby.com.clock.Constants;
public class SharePerferenceModel extends AbstractPerferenceModel {
- private boolean dirty=false;
-
public static final int DEFAULT_COLOR=Color.rgb(255, 255, 255);
protected boolean firstStart = true;
@@ -34,7 +32,7 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
protected boolean tickSound = false;
protected final static String KEY_IS_TICK_SOUND = "key_is_tick_sound";
- protected boolean triggerScreen = true;
+ protected boolean triggerScreen = false;
protected final static String KEY_IS_TRIGGER_SCREEN = "key_is_trigger_screen";
protected boolean hourSystem12 = false;
@@ -96,6 +94,10 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
protected boolean backgroundImageVisable=false;
+ protected final static String KEY_USE_SYSTEM_WALLPAPER="key_use_system_wallpaper";
+ protected boolean useSystemWallpaper=false;
+
+
protected final static String KEY_FOREGROUND_COLOR="key_foreground_color";
protected Integer foregroundColor=DEFAULT_COLOR;
@@ -246,7 +248,7 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
screenLockPassword=jsonObject.optInt(KEY_SCREEN_LOCK_PASSWORD,0);
tickSound = jsonObject.getBoolean(KEY_IS_TICK_SOUND);
- triggerScreen =jsonObject.optBoolean(KEY_IS_TRIGGER_SCREEN,true);
+ triggerScreen =jsonObject.optBoolean(KEY_IS_TRIGGER_SCREEN,false);
mCity = jsonObject.optString(KEY_CITY,"jinhua");
mDescription = jsonObject.optString(KEY_DESCRPTION, "");
startHourPowerTime = new DateModel();
@@ -291,6 +293,8 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
todoSyncAble=jsonObject.optBoolean(KEY_SYS_TODO_SYNC_ABLE,false);
+ useSystemWallpaper=jsonObject.optBoolean(KEY_USE_SYSTEM_WALLPAPER,false);
+
themeUILoad(jsonObject);
}
@@ -344,6 +348,8 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
jsonObject.put(KEY_SYS_TODO_SYNC_ABLE,todoSyncAble);
+ jsonObject.put(KEY_USE_SYSTEM_WALLPAPER,useSystemWallpaper);
+
themeUISave(jsonObject);
}
@@ -491,6 +497,15 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
dirtySave();
}
+ public boolean isUseSystemWallpaper() {
+ return useSystemWallpaper;
+ }
+
+ public void setUseSystemWallpaper(boolean useSystemWallpaper) {
+ this.useSystemWallpaper = useSystemWallpaper;
+ dirtySave();
+ }
+
public boolean isBackgroundAnimatorRandomColor() {
return backgroundAnimatorRandomColor;
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/net/NetworkManager.java b/app/src/main/java/clock/socoolby/com/clock/net/NetworkManager.java
index 5f47837..62df490 100755
--- a/app/src/main/java/clock/socoolby/com/clock/net/NetworkManager.java
+++ b/app/src/main/java/clock/socoolby/com/clock/net/NetworkManager.java
@@ -74,19 +74,19 @@ public final class NetworkManager {
if (url == null || url.length() == 0 || requestObject == null) {
return false;
}
- Log.d(TAG, String.format("request URL:%s \nrequest Params:%s", request.getUrl(), requestObject.toString()));
+ timber.log.Timber.d(String.format("request URL:%s \nrequest Params:%s", request.getUrl(), requestObject.toString()));
JsonObjectRequest jsonRequest = new JsonObjectRequest(url, requestObject,
new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
- Log.d(TAG, "http response JsonString:" + response.toString());
+ timber.log.Timber.d("http response JsonString:" + response.toString());
listener.onResponse(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
- Log.d(TAG, "http request fail");
+ timber.log.Timber.d("http request fail");
listener.onRequestFailed(Constants.FAIL_CODE, error.toString());
}
}) {
diff --git a/app/src/main/java/clock/socoolby/com/clock/pop/CalendarPopup.java b/app/src/main/java/clock/socoolby/com/clock/pop/CalendarPopup.java
index 019766c..450f90e 100644
--- a/app/src/main/java/clock/socoolby/com/clock/pop/CalendarPopup.java
+++ b/app/src/main/java/clock/socoolby/com/clock/pop/CalendarPopup.java
@@ -9,6 +9,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -168,6 +169,7 @@ public class CalendarPopup extends FullScreenDialogFragment implements CalendarV
public void onEvent(ClockEvent event) {
initSyncTodoData();
todo_sync.setClickable(true);
+ Toast.makeText(getContext(), "同步完成。。。", Toast.LENGTH_SHORT).show();
}
});
@@ -217,7 +219,7 @@ public class CalendarPopup extends FullScreenDialogFragment implements CalendarV
todoAdapter.clear();
List dayEntityList=todoSyncServiceManager.getTodoEntities(calendar.getYear(),calendar.getMonth()-1,calendar.getDay());
- Log.d(TAG,"onCalendarSelect on month:"+calendar.getMonth()+"\t list size:"+dayEntityList.size());
+ timber.log.Timber.d("onCalendarSelect on month:"+calendar.getMonth()+"\t list size:"+dayEntityList.size());
if(dayEntityList.size()>0)
todoAdapter.setItems(dayEntityList);
}
@@ -236,13 +238,13 @@ public class CalendarPopup extends FullScreenDialogFragment implements CalendarV
protected void initSyncTodoData(){
Map map = new HashMap<>();
Calendar todoCalendar;
- Log.d(TAG,"total todos :"+todoSyncServiceManager.getTodoEntities().size());
+ timber.log.Timber.d("total todos :"+todoSyncServiceManager.getTodoEntities().size());
for(TodoEntity todoEntity:todoSyncServiceManager.getTodoEntities()){
- //Log.d(TAG,"todo name:"+todoEntity.getSubject()+"create time:"+todoEntity.getCreateddatetime());
+ //timber.log.Timber.d("todo name:"+todoEntity.getSubject()+"create time:"+todoEntity.getCreateddatetime());
if(todoEntity.getCreateddatetime()!=null){
todoCalendar=getSchemeCalendar(todoEntity.getCreateddatetime(),0xFF40db25,todoEntity.getSubject());
map.put(todoCalendar.toString(),todoCalendar);
- //Log.d(TAG,"todo to show:"+todoCalendar.toString());
+ //timber.log.Timber.d("todo to show:"+todoCalendar.toString());
}
}
mCalendarView.setSchemeDate(map);
diff --git a/app/src/main/java/clock/socoolby/com/clock/pop/TimeSetupPopup.java b/app/src/main/java/clock/socoolby/com/clock/pop/TimeSetupPopup.java
index 0d778c4..ec645ce 100644
--- a/app/src/main/java/clock/socoolby/com/clock/pop/TimeSetupPopup.java
+++ b/app/src/main/java/clock/socoolby/com/clock/pop/TimeSetupPopup.java
@@ -135,7 +135,7 @@ public class TimeSetupPopup extends FullScreenDialogFragment implements MusicPic
@Override
public void onResume() {
super.onResume();
- Log.d(TAG,"onResume hour:"+hour+"\tminute:"+minute);
+ timber.log.Timber.d("onResume hour:"+hour+"\tminute:"+minute);
mHourSeekbar.fillInside();
mHourSeekbar.setCurProcess(hour);
mMinuteSeekbar.setCurProcess(minute);
diff --git a/app/src/main/java/clock/socoolby/com/clock/screen/LockAccessibilityService.java b/app/src/main/java/clock/socoolby/com/clock/screen/LockAccessibilityService.java
new file mode 100644
index 0000000..90b8495
--- /dev/null
+++ b/app/src/main/java/clock/socoolby/com/clock/screen/LockAccessibilityService.java
@@ -0,0 +1,38 @@
+package clock.socoolby.com.clock.screen;
+
+import android.accessibilityservice.AccessibilityService;
+import android.os.Build;
+import android.view.accessibility.AccessibilityEvent;
+
+import timber.log.Timber;
+
+public class LockAccessibilityService extends AccessibilityService {
+ public static final String LOCK_COMMAND="Lock Screen";
+
+ @Override
+ public void onAccessibilityEvent(AccessibilityEvent event) {
+ Timber.v("onAccessibilityEvent(): "+event.getText().toString());
+ if(null!=event) {
+ if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED && !event.getText().isEmpty()&&event.getText().get(0).toString().equalsIgnoreCase(LOCK_COMMAND)) {
+ Timber.d("Received Lock Command");
+ lockDevice();
+ }
+ }
+ }
+
+ private void lockDevice() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ Timber.d("Locking device using AccessibilityService");
+ performGlobalAction(GLOBAL_ACTION_LOCK_SCREEN);
+ } else {
+ // This should never be reached, but we'll log it just in case.
+ Timber.e("Locking device using AccessibilityService is only available for Android versions >= Pie");
+ }
+ }
+
+
+ @Override
+ public void onInterrupt() {
+ Timber.v("onInterrupt()");
+ }
+}
diff --git a/app/src/main/java/clock/socoolby/com/clock/utils/ScreenManager.java b/app/src/main/java/clock/socoolby/com/clock/screen/ScreenManager.java
similarity index 56%
rename from app/src/main/java/clock/socoolby/com/clock/utils/ScreenManager.java
rename to app/src/main/java/clock/socoolby/com/clock/screen/ScreenManager.java
index afcbc83..998de88 100755
--- a/app/src/main/java/clock/socoolby/com/clock/utils/ScreenManager.java
+++ b/app/src/main/java/clock/socoolby/com/clock/screen/ScreenManager.java
@@ -1,40 +1,57 @@
-package clock.socoolby.com.clock.utils;
+package clock.socoolby.com.clock.screen;
-import android.app.Activity;
import android.app.ActivityManager;
-import android.app.Application;
import android.app.KeyguardManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.os.Build;
import android.os.PowerManager;
import androidx.appcompat.app.AppCompatActivity;
-import android.view.Window;
-import android.view.WindowManager;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
import java.util.List;
import clock.socoolby.com.clock.ActivateAdmin;
import clock.socoolby.com.clock.ClockApplication;
+import timber.log.Timber;
public class ScreenManager {
public static boolean isScreenOn() {
PowerManager pm = (PowerManager) ClockApplication.getContext().getSystemService(AppCompatActivity.POWER_SERVICE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+ return pm.isInteractive();
+ }
return pm.isScreenOn();
}
-
public static void systemLock(Context context) {
- DevicePolicyManager policyManager;
- ComponentName componentName;
- policyManager = (DevicePolicyManager) context.getSystemService(AppCompatActivity.DEVICE_POLICY_SERVICE);
-
- componentName = new ComponentName(context, ActivateAdmin.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ AccessibilityManager manager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
+ if (manager.isEnabled()) {
+ AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED);
+ event.setPackageName(context.getPackageName());
+ event.setClassName(ScreenManager.class.getName());
+ event.setEnabled(true);
+ event.getText().add(LockAccessibilityService.LOCK_COMMAND);
+ Timber.v("Accessibility enabled. Firing AccessibilityEvent: $event");
+ manager.sendAccessibilityEvent(event);
+ } else {
+ Timber.v("Accessibility disabled. Can't fire AccessibilityEvent");
+ }
+ return;
+ }
+ DevicePolicyManager policyManager = (DevicePolicyManager) context.getSystemService(AppCompatActivity.DEVICE_POLICY_SERVICE);
+ ComponentName componentName= new ComponentName(context, ActivateAdmin.class);
if (!policyManager.isAdminActive(componentName)) {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
+ //描述(additional explanation)
+ intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 用于锁定屏幕 ------");
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
context.startActivity(intent);
}
if (policyManager.isAdminActive(componentName)) {
@@ -45,7 +62,7 @@ public class ScreenManager {
public static void systemUnLock() {
PowerManager pm = (PowerManager) ClockApplication.getContext().getSystemService(AppCompatActivity.POWER_SERVICE);
- PowerManager.WakeLock mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.FULL_WAKE_LOCK, "workclock:SimpleTimer");
+ PowerManager.WakeLock mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "workclock:SimpleTimer");
mWakelock.acquire();
mWakelock.release();
KeyguardManager keyguardManager = (KeyguardManager) ClockApplication.getContext().getSystemService(AppCompatActivity.KEYGUARD_SERVICE);
@@ -64,4 +81,5 @@ public class ScreenManager {
}
return false;
}
+
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/service/ProximityService.java b/app/src/main/java/clock/socoolby/com/clock/service/ProximityService.java
index b31cd8b..4508520 100755
--- a/app/src/main/java/clock/socoolby/com/clock/service/ProximityService.java
+++ b/app/src/main/java/clock/socoolby/com/clock/service/ProximityService.java
@@ -1,5 +1,8 @@
package clock.socoolby.com.clock.service;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
@@ -7,13 +10,15 @@ import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
+import android.os.Build;
import android.os.IBinder;
-import android.util.Log;
+
+import androidx.annotation.RequiresApi;
import clock.socoolby.com.clock.ClockApplication;
import clock.socoolby.com.clock.MainActivity;
import clock.socoolby.com.clock.utils.FuncUnit;
-import clock.socoolby.com.clock.utils.ScreenManager;
+import clock.socoolby.com.clock.screen.ScreenManager;
/**
* Alway zuo,never die.
@@ -23,23 +28,27 @@ import clock.socoolby.com.clock.utils.ScreenManager;
public class ProximityService extends Service {
private final static String TAG = ProximityService.class.getSimpleName();
+ public static final String CHANNEL_ID="workclock_channel";
+
+ protected boolean isRunning=false;
+
private SensorManager mSensorManager;
private SensorEventListener mSensorListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float[] its = sensorEvent.values;
- Log.d(TAG, String.format("its %f %f %f len:,%d", its[0], its[1], its[2], its.length));
+ //timber.log.Timber.d(String.format("its %f %f %f len:,%d", its[0], its[1], its[2], its.length));
if (sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY) {
if (FuncUnit.isForeground(ClockApplication.getContext(), MainActivity.class.getName())) {
if (its[0] <= 3) {
- Log.d(TAG,"Hand stay");
+ timber.log.Timber.d("Hand stay");
if (ScreenManager.isScreenOn()) {
ScreenManager.systemLock(ClockApplication.getInstance().getApplicationContext());
} else {
ScreenManager.systemUnLock();
}
} else {
- Log.d(TAG,"Hand leave...");
+ timber.log.Timber.d("Hand leave...");
}
}
}
@@ -57,7 +66,6 @@ public class ProximityService extends Service {
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
mSensorManager.registerListener(mSensorListener, mSensor, SensorManager.SENSOR_DELAY_FASTEST);
-
}
@Override
@@ -67,7 +75,12 @@ public class ProximityService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
-
+ if(isRunning)
+ return super.onStartCommand(intent, flags, startId);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ initChanel();
+ }
+ isRunning=true;
return super.onStartCommand(intent, flags, startId);
}
@@ -76,4 +89,16 @@ public class ProximityService extends Service {
mSensorManager.unregisterListener(mSensorListener);
super.onDestroy();
}
+
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ private void initChanel(){
+ NotificationChannel channel = new NotificationChannel(CHANNEL_ID,"FallDetect",
+ NotificationManager.IMPORTANCE_HIGH);
+
+ NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ manager.createNotificationChannel(channel);
+
+ Notification notification = new Notification.Builder(getApplicationContext(),CHANNEL_ID).build();
+ startForeground(3210, notification);
+ }
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/state/ClockStateMachine.java b/app/src/main/java/clock/socoolby/com/clock/state/ClockStateMachine.java
index 00e3544..53daa41 100644
--- a/app/src/main/java/clock/socoolby/com/clock/state/ClockStateMachine.java
+++ b/app/src/main/java/clock/socoolby/com/clock/state/ClockStateMachine.java
@@ -81,13 +81,13 @@ public class ClockStateMachine implements Handler.Callback{
public void start(){
- //Log.d(TAG,"create timer and timerTask.................................");
+ //timber.log.Timber.d("create timer and timerTask.................................");
timer = new Timer();
handler = new Handler(this);
timerTask = new TimerTask() {
@Override
public void run() {
- //Log.d(TAG, "timerTask move...");
+ //timber.log.Timber.d("timerTask move...");
handler.sendEmptyMessage(UPDATE_TIME);
}
};
@@ -255,7 +255,7 @@ public class ClockStateMachine implements Handler.Callback{
beforeHour=globalViewModel.getTime_hour().getValue();
if(beforeHour!=date.getHour()) {
globalViewModel.setTime_hour(date.getHour());
- Log.d(TAG,"in state machine hour changed:"+beforeHour+"->"+date.getHour());
+ timber.log.Timber.d("in state machine hour changed:"+beforeHour+"->"+date.getHour());
if(isHourAnimatorAble()&&date.getMinute()==0) {
if (HourAnimatorFactory.isHourAnimator(globalViewModel.getHourAlterTypeName().getValue()))
EventManger.post(ClockEvent.buildHourAnimator(true));
@@ -280,7 +280,7 @@ public class ClockStateMachine implements Handler.Callback{
DateModel currentDate=null;
private void updateDay(DateModel date){
if(currentDate==null||currentDate.getDay()!=date.getDay()) {
- Log.d(TAG,"updateDay."+date);
+ timber.log.Timber.d("updateDay."+date);
currentDate=date;
String dayString = date.getToday();
String dateString = date.getDateString();
@@ -319,7 +319,7 @@ public class ClockStateMachine implements Handler.Callback{
int today = date.getWeek();
if (model.getTypeHourPower() != Constants.TALKING_NO_REPORT) {
- //Log.d(TAG, String.format("reportTime Year:%d Month:%d Day:%d Hour:%d Minute:%d Today:%d", year, month, day, hour, minute, today));
+ //timber.log.Timber.d(String.format("reportTime Year:%d Month:%d Day:%d Hour:%d Minute:%d Today:%d", year, month, day, hour, minute, today));
if (!alterManager.isReport(hour, minute))
return;
if ((minute == 30 || minute == 0) && model.getTypeHourPower() == Constants.TALKING_HALF_AN_HOUR && second == 0) {
diff --git a/app/src/main/java/clock/socoolby/com/clock/todo/TodoSyncServiceManager.java b/app/src/main/java/clock/socoolby/com/clock/todo/TodoSyncServiceManager.java
index 2503d8f..5281fed 100644
--- a/app/src/main/java/clock/socoolby/com/clock/todo/TodoSyncServiceManager.java
+++ b/app/src/main/java/clock/socoolby/com/clock/todo/TodoSyncServiceManager.java
@@ -84,7 +84,6 @@ public class TodoSyncServiceManager {
authCallback.onCancel();
return;
}
-
I_TodoSyncService syncService=syncServicesMap.get(serviceName);
if(!syncService.isSignIn())
syncService.signIn(activity,authCallback);
@@ -123,7 +122,7 @@ public class TodoSyncServiceManager {
@Override
public void onRequestFailed(int error, String errorMessage) {
- Log.d(TAG, errorMessage);
+ timber.log.Timber.d(errorMessage);
}
};
todoSyncService.list(requestListener);
@@ -250,7 +249,7 @@ public class TodoSyncServiceManager {
private boolean isSameDay(Date base,Date toCheckday){
if(toCheckday==null)
return false;
- //Log.d(TAG,"isSameDay from:"+ TypeUtils.dayFormat(base)+"\t to:"+TypeUtils.dayFormat(toCheckday));
+ //timber.log.Timber.d("isSameDay from:"+ TypeUtils.dayFormat(base)+"\t to:"+TypeUtils.dayFormat(toCheckday));
return TimeUtils.isSameDay(base,toCheckday);
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/MicrosoftTodoSyncServiceImpl.java b/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/MicrosoftTodoSyncServiceImpl.java
index 442f201..8f682b7 100644
--- a/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/MicrosoftTodoSyncServiceImpl.java
+++ b/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/MicrosoftTodoSyncServiceImpl.java
@@ -66,13 +66,13 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
}
public void start(Context applicationContext, NetworkManager networkManager){
- Log.d(TAG,"on start start...");
+ timber.log.Timber.d("on start start...");
/* Configure your sample app and save state for this activity */
serviceStarting =true;
sampleApp = new PublicClientApplication(
applicationContext,
R.raw.auth_config);
- Log.d(TAG,"create sampleApp...");
+ timber.log.Timber.d("create sampleApp...");
this.networkManager=networkManager;
/* Attempt to get a user and acquireTokenSilent
@@ -83,15 +83,15 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
public void onAccountsLoaded(final List accounts) {
if (!accounts.isEmpty()) {
/* This sample doesn't support multi-account scenarios, use the first account */
- Log.d(TAG,"on accounts load");
+ timber.log.Timber.d("on accounts load");
sampleApp.acquireTokenSilentAsync(SCOPES, accounts.get(0), getAuthTokenCallback());
} else {
/* No accounts or >1 account */
- serviceStarting =false;
}
+ serviceStarting =false;
}
});
- Log.d(TAG,"call getAccounts end");
+ timber.log.Timber.d("call getAccounts end");
}
public void signIn(Activity activity,AuthCallback authCallback){
@@ -134,7 +134,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
}
public boolean isSignIn(){
- Log.d(TAG,"call is sing in...serviceStarting:"+ serviceStarting);
+ timber.log.Timber.d("call is sing in...serviceStarting:"+ serviceStarting);
return authResult != null&&authResult.getAccessToken() != null;
}
@@ -144,7 +144,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
protected void callGraphAPI(HttpMethod methodType, String graphUrl, RequestListener listener) {
/* Make sure we have a token to send to graph */
if (authResult.getAccessToken() == null) {
- Log.d(TAG, "call graph api please sign in first ..url: " +graphUrl);
+ timber.log.Timber.d("call graph api please sign in first ..url: " +graphUrl);
return;
}
@@ -153,20 +153,20 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
try {
parameters.put("key", "value");
} catch (Exception e) {
- Log.d(TAG, "Failed to put parameters: " + e.toString());
+ timber.log.Timber.d("Failed to put parameters: " + e.toString());
}
JsonObjectRequest request = new JsonObjectRequest(methodType.value, graphUrl,
parameters,new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
/* Successfully called graph, process data and send to UI */
- Log.d(TAG, "Response: " + response.toString());
+ timber.log.Timber.d("Response: " + response.toString());
listener.onResponse(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
- Log.d(TAG, "Error: " + error.toString());
+ timber.log.Timber.d("Error: " + error.toString());
listener.onRequestFailed(0,error.toString());
}
}) {
@@ -182,8 +182,8 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
}
protected void callGraphAPI(JsonObjectRequest request) {
- Log.d(TAG, "Starting volley request to graph");
- Log.d(TAG, "Adding HTTP GET to Queue, Request: " + request.toString());
+ timber.log.Timber.d("Starting volley request to graph");
+ timber.log.Timber.d("Adding HTTP GET to Queue, Request: " + request.toString());
networkManager.sendRequest(3000,request);
}
@@ -198,7 +198,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
@Override
public void onSuccess(IAuthenticationResult authenticationResult) {
/* Successfully got a token, call graph now */
- Log.d(TAG, "Successfully authenticated");
+ timber.log.Timber.d("Successfully authenticated");
/* Store the authResult */
authResult = authenticationResult;
serviceStarting =false;
@@ -207,7 +207,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
@Override
public void onError(MsalException exception) {
/* Failed to acquireToken */
- Log.d(TAG, "Authentication failed: " + exception.toString());
+ timber.log.Timber.d("Authentication failed: " + exception.toString());
if (exception instanceof MsalClientException) {
/* Exception inside MSAL, more info inside MsalError.java */
@@ -222,7 +222,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
@Override
public void onCancel() {
/* User cancelled the authentication */
- Log.d(TAG, "User cancelled login.");
+ timber.log.Timber.d("User cancelled login.");
serviceStarting =false;
}
};
@@ -238,7 +238,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
@Override
public void onSuccess(IAuthenticationResult authenticationResult) {
/* Successfully got a token, call graph now */
- Log.d(TAG, "Successfully authenticated");
+ timber.log.Timber.d("Successfully authenticated");
/* Store the authResult */
authResult = authenticationResult;
@@ -249,7 +249,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
@Override
public void onError(MsalException exception) {
/* Failed to acquireToken */
- Log.d(TAG, "Authentication failed: " + exception.toString());
+ timber.log.Timber.d("Authentication failed: " + exception.toString());
if (exception instanceof MsalClientException) {
/* Exception inside MSAL, more info inside MsalError.java */
@@ -265,7 +265,7 @@ public class MicrosoftTodoSyncServiceImpl implements I_TodoSyncService {
@Override
public void onCancel() {
/* User cancelled the authentication */
- Log.d(TAG, "User cancelled login.");
+ timber.log.Timber.d("User cancelled login.");
authCallback.onCancel();
}
};
diff --git a/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/utils/TypeUtils.java b/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/utils/TypeUtils.java
index bbb779a..9721701 100644
--- a/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/utils/TypeUtils.java
+++ b/app/src/main/java/clock/socoolby/com/clock/todo/microsoft/utils/TypeUtils.java
@@ -74,7 +74,7 @@ public class TypeUtils {
modifiedStrVal = strVal;
}
- //Log.d(TAG,"string to deserialize date:"+modifiedStrVal);
+ //timber.log.Timber.d("string to deserialize date:"+modifiedStrVal);
// Parse the well-formatted date string.
final String datePattern;
diff --git a/app/src/main/java/clock/socoolby/com/clock/utils/Player.java b/app/src/main/java/clock/socoolby/com/clock/utils/Player.java
index eb5ae6f..8a296b4 100755
--- a/app/src/main/java/clock/socoolby/com/clock/utils/Player.java
+++ b/app/src/main/java/clock/socoolby/com/clock/utils/Player.java
@@ -5,7 +5,6 @@ import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
-import android.util.Log;
import java.io.IOException;
import java.util.HashMap;
@@ -14,6 +13,7 @@ import java.util.Map;
import clock.socoolby.com.clock.ClockApplication;
import clock.socoolby.com.clock.R;
+import clock.socoolby.com.clock.screen.ScreenManager;
public class Player {
private final static String TAG = Player.class.getSimpleName();
@@ -105,10 +105,10 @@ public class Player {
}
public void reportTime(Context activity, int year, int month, int day, int hour, int minute, int today) {
- Log.d(TAG,"go in report time playAble:"+playAble+"\tisReportime:"+isReporttime);
+ timber.log.Timber.d("go in report time playAble:"+playAble+"\tisReportime:"+isReporttime);
if (!playAble||isReporttime)
return;
- Log.d(TAG, String.format("reportTime Year:%d Month:%d Day:%d Hour:%d Minute:%d Today:%d", year, month, day, hour, minute, today));
+ timber.log.Timber.d(String.format("reportTime Year:%d Month:%d Day:%d Hour:%d Minute:%d Today:%d", year, month, day, hour, minute, today));
LinkedList playList = new LinkedList();
playList.add(R.raw.todayis);
@@ -169,7 +169,7 @@ public class Player {
}
public void playTick(Context activity,int tick_type_id) {
- Log.d(TAG,"go in Play tick playable:"+playAble+"\tisReportime:"+isReporttime);
+ timber.log.Timber.d("go in Play tick playable:"+playAble+"\tisReportime:"+isReporttime);
if (!playAble||isReporttime)
return;
if (!ScreenManager.isScreenOn() || ScreenManager.isApplicationBroughtToBackground(ClockApplication.getContext()))
@@ -181,7 +181,7 @@ public class Player {
private Map soundFileCache=new HashMap<>();
public void playHandUp(Context activity){
- Log.d(TAG,"go in Play hand up playable:"+playAble+"\tisReportime:"+isReporttime);
+ timber.log.Timber.d("go in Play hand up playable:"+playAble+"\tisReportime:"+isReporttime);
if (!playAble||isReporttime)
return;
if (!ScreenManager.isScreenOn() || ScreenManager.isApplicationBroughtToBackground(ClockApplication.getContext()))
@@ -275,7 +275,7 @@ public class Player {
}
public void setPlayAble(boolean playAble) {
- Log.d(TAG,"set Play able:"+playAble);
+ timber.log.Timber.d("set Play able:"+playAble);
this.playAble = playAble;
if(!playAble&&mediaPlayer!=null){
resert();
diff --git a/app/src/main/java/clock/socoolby/com/clock/viewmodel/GlobalViewModel.java b/app/src/main/java/clock/socoolby/com/clock/viewmodel/GlobalViewModel.java
index 8f99cbf..796634f 100644
--- a/app/src/main/java/clock/socoolby/com/clock/viewmodel/GlobalViewModel.java
+++ b/app/src/main/java/clock/socoolby/com/clock/viewmodel/GlobalViewModel.java
@@ -2,13 +2,18 @@ package clock.socoolby.com.clock.viewmodel;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+
+import android.graphics.Color;
import android.net.Uri;
import java.util.Date;
+import clock.socoolby.com.clock.ThemeUIManager;
import clock.socoolby.com.clock.model.SharePerferenceModel;
import clock.socoolby.com.clock.state.ClockModeEnum;
import clock.socoolby.com.clock.state.ClockInterfaceTypeEnum;
+import clock.socoolby.com.clock.state.ClockStateMachine;
+import clock.socoolby.com.clock.todo.TodoSyncServiceManager;
public class GlobalViewModel extends ViewModel {
@@ -33,6 +38,8 @@ public class GlobalViewModel extends ViewModel {
private MutableLiveData autoFullScreen=new MutableLiveData<>();
+ private MutableLiveData useSystemWallpaper=new MutableLiveData<>();
+
//system
private Boolean tickSound=false;
@@ -42,7 +49,7 @@ public class GlobalViewModel extends ViewModel {
private MutableLiveData brightness=new MutableLiveData<>();
- //public MutableLiveData heartbeat=new MutableLiveData();
+ public MutableLiveData triggerScreen=new MutableLiveData();
public MutableLiveData todoSyncAble=new MutableLiveData();
@@ -72,6 +79,12 @@ public class GlobalViewModel extends ViewModel {
SharePerferenceModel model;
+ ThemeUIManager themeUIManager;
+
+ ClockStateMachine clockStateMachine;
+
+ TodoSyncServiceManager todoSyncServiceManager;
+
public GlobalViewModel(SharePerferenceModel model) {
this.model = model;
init();
@@ -81,10 +94,8 @@ public class GlobalViewModel extends ViewModel {
private void init(){
srceenLock.setValue(false);
brightness.setValue(100);
- //heartbeat.setValue(true);
appConfig.setValue(false);
clockModeEnum.setValue(ClockModeEnum.NORMAL);
- //timeHourAnimatorStarting.setValue(false);
}
public void loadFromModel(){
@@ -113,6 +124,9 @@ public class GlobalViewModel extends ViewModel {
time_hour.setValue(new Date().getHours());
timeHourAnimatordialy.setValue(model.getTimeHourAlterDialy());
+ useSystemWallpaper.setValue(model.isUseSystemWallpaper());
+
+ triggerScreen.setValue(model.isTriggerScreen());
}
public MutableLiveData getCity() {
@@ -155,6 +169,15 @@ public class GlobalViewModel extends ViewModel {
return clockInterfaceTypeEnum;
}
+ public MutableLiveData getTriggerScreen() {
+ return triggerScreen;
+ }
+
+ public void setTriggerScreen(Boolean triggerScreen) {
+ this.triggerScreen.setValue(triggerScreen);
+ model.setTriggerScreen(triggerScreen);
+ }
+
public MutableLiveData getClockModeEnum() {
return clockModeEnum;
}
@@ -192,6 +215,25 @@ public class GlobalViewModel extends ViewModel {
return handUpAble;
}
+ public MutableLiveData getUseSystemWallpaper() {
+ return useSystemWallpaper;
+ }
+
+ public void setUseSystemWallpaper(Boolean useSystemWallpaper) {
+ this.useSystemWallpaper.setValue(useSystemWallpaper);
+ model.setUseSystemWallpaper(useSystemWallpaper);
+ }
+
+ public void checkSystemWallpaperSet(){
+ if(useSystemWallpaper.getValue()) {
+ backgroundColor.setValue(Color.TRANSPARENT);
+ backgroundImageVisable.setValue(false);
+ }else{
+ backgroundColor.setValue(model.getBackgroundColor());
+ backgroundImageVisable.setValue(model.isBackgroundImageVisable());
+ }
+ }
+
public void setHandUpTime(Integer handUpTime) {
this.handUpTime.setValue(handUpTime);
//model.setHandUpTime(handUpTime);
@@ -304,13 +346,6 @@ public class GlobalViewModel extends ViewModel {
model.setHandUpTypeName(handUpTypeName);
}
- /*public MutableLiveData getHeartbeat() {
- return heartbeat;
- }
-
- public void setHeartbeat(Boolean heartbeat) {
- this.heartbeat.setValue(heartbeat);
- }*/
public MutableLiveData getHourAlterTypeName() {
return hourAlterTypeName;
@@ -370,4 +405,29 @@ public class GlobalViewModel extends ViewModel {
public MutableLiveData getTodoSyncAble(){
return todoSyncAble;
}
+
+
+ public ThemeUIManager getThemeUIManager() {
+ return themeUIManager;
+ }
+
+ public void setThemeUIManager(ThemeUIManager themeUIManager) {
+ this.themeUIManager = themeUIManager;
+ }
+
+ public ClockStateMachine getClockStateMachine() {
+ return clockStateMachine;
+ }
+
+ public void setClockStateMachine(ClockStateMachine clockStateMachine) {
+ this.clockStateMachine = clockStateMachine;
+ }
+
+ public TodoSyncServiceManager getTodoSyncServiceManager() {
+ return todoSyncServiceManager;
+ }
+
+ public void setTodoSyncServiceManager(TodoSyncServiceManager todoSyncServiceManager) {
+ this.todoSyncServiceManager = todoSyncServiceManager;
+ }
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/FireworkAnimator.java b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/FireworkAnimator.java
index 241526a..674c6a3 100644
--- a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/FireworkAnimator.java
+++ b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/FireworkAnimator.java
@@ -154,7 +154,7 @@ public class FireworkAnimator extends AbstractCacheDifferenceAnimator0?"left":"right"));
+ timber.log.Timber.d("food is "+(distanceY>0?"left":"right"));
setSnakeDirection(distanceY>0?GameType.LEFT:GameType.RIGHT);
return;
}
@@ -190,11 +190,11 @@ public class SnakeAnimator extends AbstractAnimator {
case GameType.LEFT:
case GameType.RIGHT:
if(distanceX==0&&Math.abs(distanceY)<4) {
- Log.d(TAG,"close to food for X,dist :"+distanceY);
+ timber.log.Timber.d("close to food for X,dist :"+distanceY);
return;
}
if(distanceY==0&&Math.abs(distanceX)==1){
- Log.d(TAG,"food is "+(distanceX>0?"up":"down"));
+ timber.log.Timber.d("food is "+(distanceX>0?"up":"down"));
setSnakeDirection(distanceX>0?GameType.TOP:GameType.BOTTOM);
return;
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/Wave3DAnimator.java b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/Wave3DAnimator.java
index 1906155..5c7a3f2 100644
--- a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/Wave3DAnimator.java
+++ b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/Wave3DAnimator.java
@@ -71,7 +71,7 @@ public class Wave3DAnimator extends AbstractAnimator {
datas.add(pointCicle);
}
}
- Log.d(Tag,"initWave datas count:"+datas.size());
+ timber.log.Timber.d("initWave datas count:"+datas.size());
}
diff --git a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/EZLedAnimator.java b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/EZLedAnimator.java
index f3b3bcf..826af15 100644
--- a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/EZLedAnimator.java
+++ b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/EZLedAnimator.java
@@ -179,7 +179,7 @@ public class EZLedAnimator extends AbstractAnimator {
* @param text content
*/
public void setText(CharSequence text) {
- Log.d(Tag,"setText:"+text);
+ timber.log.Timber.d("setText:"+text);
this.contentType = CONTENT_TYPE_TEXT;
this.ledText = text;
measureTextBound(text.toString());
@@ -232,7 +232,7 @@ public class EZLedAnimator extends AbstractAnimator {
startX=maxWidth;
Float len=maxWidth*stepPercent;
startX=startX-len.intValue();
- Log.d(Tag,"move right to left startX:"+startX);
+ timber.log.Timber.d("move right to left startX:"+startX);
if(startX<-mDrawableWidth)
startX=maxWidth;
}
@@ -248,7 +248,7 @@ public class EZLedAnimator extends AbstractAnimator {
}
mustRefush=false;
}
- Log.d(Tag,"onDraw bitmap is :"+bitmap);
+ timber.log.Timber.d("onDraw bitmap is :"+bitmap);
float y=height* hightPercent -mDrawableHeight/2;
if (bitmap != null) {
if(bitmap.getWidth() > TEXTURE_MAX){
@@ -283,7 +283,7 @@ public class EZLedAnimator extends AbstractAnimator {
*/
private Bitmap renderText(CharSequence text, Paint paint) {
- Log.d(Tag,"renderText:"+text);
+ timber.log.Timber.d("renderText:"+text);
Bitmap cacheMap = Bitmap.createBitmap(mDrawableWidth, mDrawableHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(cacheMap);
int yPos = (int) ((canvas.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2));
@@ -296,7 +296,7 @@ public class EZLedAnimator extends AbstractAnimator {
}
private Bitmap generateDrawable(Bitmap bitmap) {
- Log.d(Tag,"generateDrawable:"+bitmap);
+ timber.log.Timber.d("generateDrawable:"+bitmap);
if (bitmap != null) {
release();
measureBitmap(bitmap);
@@ -311,7 +311,7 @@ public class EZLedAnimator extends AbstractAnimator {
* @return led bitmap
*/
private Bitmap generateLedBitmap(Bitmap src) {
- Log.d(Tag,"generateLedBitmap:"+src);
+ timber.log.Timber.d("generateLedBitmap:"+src);
Bitmap bitmap = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
for (Point point : circlePoint) {
@@ -351,7 +351,7 @@ public class EZLedAnimator extends AbstractAnimator {
* Calculate the led point position
*/
private void measurePoint(int width, int height) {
- Log.d(Tag,"measurePoint width:"+width+"height:"+height);
+ timber.log.Timber.d("measurePoint width:"+width+"height:"+height);
int halfBound = ledRadius + ledSpace / 2;
int x = halfBound;
int y = halfBound;
diff --git a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/PathEffectTextAnimator.java b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/PathEffectTextAnimator.java
index cd138e4..7a34f7a 100644
--- a/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/PathEffectTextAnimator.java
+++ b/app/src/main/java/clock/socoolby/com/clock/widget/animatorview/animator/textanimator/PathEffectTextAnimator.java
@@ -117,7 +117,7 @@ public class PathEffectTextAnimator extends AbstractAnimator= LOG_DEBUG) {
- Log.d(tag, message);
+ timber.log.Timber.d(message);
}
}
@Override
public void debug(String tag, String message, Throwable exception) {
if (logLevel >= LOG_DEBUG) {
- Log.d(tag, message, exception);
+ timber.log.Timber.d(message, exception);
}
}
diff --git a/app/src/main/java/com/badlogic/gdx/backends/androidx/AndroidInputThreePlus.java b/app/src/main/java/com/badlogic/gdx/backends/androidx/AndroidInputThreePlus.java
index eba1986..96b8c2d 100644
--- a/app/src/main/java/com/badlogic/gdx/backends/androidx/AndroidInputThreePlus.java
+++ b/app/src/main/java/com/badlogic/gdx/backends/androidx/AndroidInputThreePlus.java
@@ -52,7 +52,7 @@ public class AndroidInputThreePlus extends AndroidInput implements OnGenericMoti
@Override
public boolean onGenericMotion (View view, MotionEvent event) {
- Log.d(TAG,"onGenericMotion"+view.toString());
+ timber.log.Timber.d("onGenericMotion"+view.toString());
if (mouseHandler.onGenericMotion(event, this)) return true;
for (int i = 0, n = genericMotionListeners.size(); i < n; i++)
if (genericMotionListeners.get(i).onGenericMotion(view, event)) return true;
@@ -67,7 +67,7 @@ public class AndroidInputThreePlus extends AndroidInput implements OnGenericMoti
@Override
public boolean onTouch (View view, MotionEvent event) {
super.onTouch(view,event);
- //Log.d(TAG,"onTouch interrupt:"+interruptTouch+"\t event:"+event.toString());
+ //timber.log.Timber.d("onTouch interrupt:"+interruptTouch+"\t event:"+event.toString());
return interruptTouch;
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 86c3032..85fd731 100755
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,7 +4,6 @@
android:id="@+id/main_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#000"
tools:context="clock.socoolby.com.clock.MainActivity">
+
+
+
+
+
+
+
+
开启小宠物
Todo同步
开启微软Todo同步
+ 本服务用于锁定屏幕,只有开启才有效
+ 壁纸设置
+ 使用系统壁纸
+ 正在使用系统壁纸,是否要关闭来进行下一步?
\ 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 17ab24b..83586ac 100755
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,6 +6,7 @@
#4E4988
#666
#303F9F
+ #00FFFFFF
#4E4988
@@ -14,4 +15,5 @@
#a0000000
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e075285..c4b3d1e 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -32,14 +32,17 @@
examples_text
save
-
- Hello blank fragment
exit
- HandpU
+ Hand Up
OverTime Counting
deily(second):
fullscreen
spirit able
Todo同步
开启微软Todo同步
+ 本服务用于锁定屏幕,只有开启才有效
+ Wallpaper
+ Use System Wallpaper
+ Current in System Wallpaper Mode,do you logout?
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 6c3dc10..5a22947 100755
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,13 +1,5 @@
-
-
-
-
-
-
-
-
//设置最大进度
@@ -32,4 +24,8 @@
- @null
//是否有遮盖
+
+
diff --git a/app/src/main/res/xml/accessibility_service_config.xml b/app/src/main/res/xml/accessibility_service_config.xml
new file mode 100644
index 0000000..e7acf98
--- /dev/null
+++ b/app/src/main/res/xml/accessibility_service_config.xml
@@ -0,0 +1,7 @@
+
\ No newline at end of file