├── app
├── .gitignore
├── debug
│ ├── app-debug.apk
│ └── output.json
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── logo.png
│ │ │ │ ├── wall.png
│ │ │ │ ├── cloudicon.png
│ │ │ │ ├── screenshot_1.jpg
│ │ │ │ ├── screenshot_2.png
│ │ │ │ ├── screenshot_3.png
│ │ │ │ ├── screenshot_4.png
│ │ │ │ ├── under_construction.png
│ │ │ │ ├── example_appwidget_preview.png
│ │ │ │ ├── roundblack.xml
│ │ │ │ ├── roundpink.xml
│ │ │ │ ├── roundwhite.xml
│ │ │ │ ├── roundgreen.xml
│ │ │ │ ├── roundorange.xml
│ │ │ │ ├── roundbluegreen.xml
│ │ │ │ ├── button.xml
│ │ │ │ ├── setting_button.xml
│ │ │ │ ├── bluethumb.xml
│ │ │ │ ├── greenthumb.xml
│ │ │ │ ├── redthumb.xml
│ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── drawable-nodpi
│ │ │ │ └── rounddarkblue.xml
│ │ │ ├── values
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── styles.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── colors.xml
│ │ │ ├── values-v14
│ │ │ │ └── dimens.xml
│ │ │ ├── layout
│ │ │ │ ├── widget_provider.xml
│ │ │ │ ├── lockscreen_set.xml
│ │ │ │ ├── shortcutsetting.xml
│ │ │ │ ├── weathersetting.xml
│ │ │ │ ├── sentencesetting.xml
│ │ │ │ ├── labsetting.xml
│ │ │ │ ├── mainsetting.xml
│ │ │ │ ├── activity_help.xml
│ │ │ │ ├── activity_setting.xml
│ │ │ │ ├── fatversion.xml
│ │ │ │ ├── bigsizemid.xml
│ │ │ │ └── bigsizefull.xml
│ │ │ ├── values-v21
│ │ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ │ ├── bigsizemid_info.xml
│ │ │ │ ├── fatversion_info.xml
│ │ │ │ ├── midsize_info.xml
│ │ │ │ ├── bigsizefull_info.xml
│ │ │ │ ├── bigsizesmall_info.xml
│ │ │ │ ├── widgetprovider_info.xml
│ │ │ │ ├── midsizesmall.xml
│ │ │ │ └── accessibilityservice.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── leejoonhee
│ │ │ │ └── hangulclockforandroid
│ │ │ │ ├── lockscreen
│ │ │ │ ├── LockApplication.java
│ │ │ │ ├── LockWindowAccessibilityService.java
│ │ │ │ ├── lockset.java
│ │ │ │ ├── LockScreen.java
│ │ │ │ └── LockscreenService.java
│ │ │ │ ├── Service
│ │ │ │ ├── HelpActivity.java
│ │ │ │ ├── SentenceActivity.java
│ │ │ │ └── SettingActivity.java
│ │ │ │ └── MainActivity.java
│ │ ├── AndroidManifest.xml
│ │ └── AndroidManifest (1).xml
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── leejoonhee
│ │ │ └── hangulclockforandroid
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── leejoonhee
│ │ └── hangulclockforandroid
│ │ └── ExampleInstrumentedTest.java
├── proguard-rules.pro
├── google-services.json
└── build.gradle
├── settings.gradle
├── banner.jpg
├── promotionlogo.jpg
├── Screenshot_1539158155.png
├── Screenshot_1539158236.png
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── Screen Shot 2018-10-10 at 18.43.47 (2).png
├── .gitignore
├── gradle.properties
├── README.md
├── gradlew.bat
├── gradlew
└── 한글시계안드로이드_개인정보처리방침.html
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/banner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/banner.jpg
--------------------------------------------------------------------------------
/promotionlogo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/promotionlogo.jpg
--------------------------------------------------------------------------------
/app/debug/app-debug.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/debug/app-debug.apk
--------------------------------------------------------------------------------
/Screenshot_1539158155.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/Screenshot_1539158155.png
--------------------------------------------------------------------------------
/Screenshot_1539158236.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/Screenshot_1539158236.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/wall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/wall.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/drawable/cloudicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/cloudicon.png
--------------------------------------------------------------------------------
/Screen Shot 2018-10-10 at 18.43.47 (2).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/Screen Shot 2018-10-10 at 18.43.47 (2).png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/screenshot_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/screenshot_1.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/screenshot_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/screenshot_2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/screenshot_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/screenshot_3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/screenshot_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/screenshot_4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/under_construction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/under_construction.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/example_appwidget_preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jlstdio/HangulClock/HEAD/app/src/main/res/drawable/example_appwidget_preview.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 |
11 | .idea/
12 |
--------------------------------------------------------------------------------
/app/debug/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":14,"versionName":"3.2","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug"},"path":"app-debug.apk","properties":{}}]
--------------------------------------------------------------------------------
/app/src/main/res/drawable/roundblack.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/roundpink.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/roundwhite.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/roundgreen.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/roundorange.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/rounddarkblue.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/roundbluegreen.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Aug 06 15:55:40 KST 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/setting_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bluethumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/greenthumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/redthumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/lockscreen/LockApplication.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.lockscreen;
2 |
3 | import android.app.Application;
4 |
5 | public class LockApplication extends Application {
6 |
7 | public boolean lockScreenShow=false;
8 | public int notificationId=1900;
9 |
10 | @Override
11 | public void onCreate() {
12 | super.onCreate();
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 | 8dp
9 | 16dp
10 | 16dp
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v14/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 | 0dp
9 | 16dp
10 | 16dp
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/widget_provider.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/Service/HelpActivity.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.Service;
2 | import android.os.Bundle;
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import com.leejoonhee.hangulclockforandroid.R;
6 |
7 | public class HelpActivity extends AppCompatActivity {
8 |
9 | @Override
10 | protected void onCreate(Bundle savedInstanceState) {
11 | super.onCreate(savedInstanceState);
12 | setContentView(R.layout.activity_help);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/test/java/com/leejoonhee/hangulclockforandroid/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/res/xml/bigsizemid_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/fatversion_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/midsize_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/bigsizefull_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/bigsizesmall_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/widgetprovider_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/midsizesmall.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/accessibilityservice.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | android.enableJetifier=true
13 | android.useAndroidX=true
14 | org.gradle.jvmargs=-Xmx1536m
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/leejoonhee/hangulclockforandroid/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static junit.framework.Assert.assertEquals;
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() throws Exception {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getTargetContext();
24 |
25 | assertEquals("com.leejoonhee.hangulclockforandroid", appContext.getPackageName());
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Add widget
3 | EXAMPLE
4 | 한글시계
5 | Slide to unlock
6 | Locked
7 | Unlocked
8 | Move this thumb
9 |
10 | ca-app-pub-8081631582008293/5576438546
11 | ca-app-pub-8081631582008293~8449303451
12 | ca-app-pub-3940256099942544/6300978111
13 |
14 | "Turn on and it locks all soft key including HOME, RECENTS, BACK, MENU buttons.
15 |
16 | You may be warned about potential privacy risk, that's just a regular informative warning for any accessibility service. We promise NEVER EVER collecting your personal information in this accessibility service."
17 |
18 | Hello world!
19 | Settings
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/lockscreen/LockWindowAccessibilityService.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.lockscreen;
2 |
3 | import android.accessibilityservice.AccessibilityService;
4 | import android.view.KeyEvent;
5 | import android.view.accessibility.AccessibilityEvent;
6 |
7 | /**
8 | * Created by andika on 2/25/17.
9 | */
10 |
11 | public class LockWindowAccessibilityService extends AccessibilityService {
12 |
13 | @Override
14 | protected boolean onKeyEvent(KeyEvent event) {
15 |
16 | LockScreen.getInstance().init(this);
17 | if( ((LockApplication) getApplication()).lockScreenShow ){
18 | // disable home
19 | if(event.getKeyCode()==KeyEvent.KEYCODE_HOME || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER){
20 | return true;
21 | }
22 | }
23 |
24 | return super.onKeyEvent(event);
25 | }
26 |
27 | @Override
28 | public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
29 | //Log.d("onAccessibilityEvent","onAccessibilityEvent");
30 | }
31 |
32 | @Override
33 | public void onInterrupt() {
34 |
35 | }
36 |
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "123493219796",
4 | "firebase_url": "https://hangulclock.firebaseio.com",
5 | "project_id": "hangulclock",
6 | "storage_bucket": "hangulclock.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:123493219796:android:605f86e29ad55374",
12 | "android_client_info": {
13 | "package_name": "com.leejoonhee.hangulclockforandroid"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "123493219796-4jv5rk2ojdsle01gk1013e4su55g9vj3.apps.googleusercontent.com",
19 | "client_type": 3
20 | }
21 | ],
22 | "api_key": [
23 | {
24 | "current_key": "AIzaSyDVBXn0txYLFYum2kwJUQHKli8MwlVQOso"
25 | }
26 | ],
27 | "services": {
28 | "analytics_service": {
29 | "status": 1
30 | },
31 | "appinvite_service": {
32 | "status": 1,
33 | "other_platform_oauth_client": []
34 | },
35 | "ads_service": {
36 | "status": 2
37 | }
38 | }
39 | }
40 | ],
41 | "configuration_version": "1"
42 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/Service/SentenceActivity.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.Service;
2 |
3 | import android.app.Activity;
4 | import android.content.SharedPreferences;
5 | import android.os.Bundle;
6 | import androidx.appcompat.app.AppCompatActivity;
7 | import android.view.View;
8 | import android.widget.EditText;
9 |
10 | import com.leejoonhee.hangulclockforandroid.R;
11 |
12 | public class SentenceActivity extends AppCompatActivity {
13 |
14 | EditText editsentence;
15 |
16 | SharedPreferences sets;
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | setContentView(R.layout.sentencesetting);
22 |
23 | editsentence = findViewById(R.id.editsentence);
24 |
25 | sets = getSharedPreferences("usersets", Activity.MODE_PRIVATE); //MainActivity가 꺼져도 NewAppWidget에서 값을 받아 올 수 있도록 SharedPreference를 사용하였습니다
26 | editsentence.setText(sets.getString("title", "receivingfail"));
27 | }
28 |
29 | public void save(View V){
30 | String word = editsentence.getText().toString();
31 |
32 | SharedPreferences.Editor editor = sets.edit();
33 | editor.putString("title", word); //ID가"color"인 sharedpreference에 정수 "1"를 저장합니다
34 | editor.commit();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 28
5 | defaultConfig {
6 | applicationId "com.leejoonhee.hangulclockforandroid"
7 | minSdkVersion 19
8 | targetSdkVersion 28
9 | versionCode 17//Last Modified : Dec. 22. 2019
10 | versionName "3.2.5"//Last Modified : Dec. 22. 2019
11 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | aaptOptions{
20 | cruncherEnabled = false
21 | }
22 | }
23 |
24 | dependencies {
25 | implementation fileTree(include: ['*.jar'], dir: 'libs')
26 | implementation 'androidx.appcompat:appcompat:1.0.2'
27 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
28 | implementation 'com.google.android.material:material:1.0.0'
29 | implementation 'androidx.cardview:cardview:1.0.0'
30 | testImplementation 'junit:junit:4.12'
31 | androidTestImplementation 'androidx.test.ext:junit:1.1.0'
32 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
33 | implementation 'com.google.firebase:firebase-core:16.0.8'
34 | implementation 'com.google.firebase:firebase-database:16.1.0'
35 | implementation 'com.squareup.okhttp:okhttp:2.7.2'
36 | implementation 'com.google.firebase:firebase-ads:11.8.0'
37 |
38 | }
39 |
40 | apply plugin: 'com.google.gms.google-services'
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/lockscreen/lockset.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.lockscreen;
2 |
3 | import android.content.SharedPreferences;
4 | import androidx.appcompat.app.AppCompatActivity;
5 | import android.os.Bundle;
6 | import android.widget.CompoundButton;
7 | import android.widget.ToggleButton;
8 |
9 | import com.leejoonhee.hangulclockforandroid.R;
10 |
11 | public class lockset extends AppCompatActivity {
12 |
13 | ToggleButton toggleButton;
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.lockscreen_set);
19 |
20 | toggleButton = (ToggleButton)findViewById(R.id.toggleButton);
21 |
22 | LockScreen.getInstance().init(this,true);
23 |
24 | SharedPreferences sets = getSharedPreferences("usersets",0);
25 | sets.getInt("lock_color", 1);
26 |
27 | if(LockScreen.getInstance().isActive()){
28 | toggleButton.setChecked(true);
29 | }
30 | else{
31 | toggleButton.setChecked(false);
32 |
33 | }
34 |
35 | toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
36 | @Override
37 | public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
38 | if(checked){
39 |
40 | LockScreen.getInstance().active();
41 | }
42 | else{
43 | LockScreen.getInstance().deactivate();
44 | }
45 | }
46 | });
47 |
48 | }
49 |
50 |
51 |
52 |
53 |
54 |
55 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | Copyright (C) <2018>
4 |
5 | This program is free software: you can redistribute it and/or modify
6 |
7 | it under the terms of the GNU General Public License as published by
8 |
9 | the Free Software Foundation, either version 3 of the License, or any later version.
10 |
11 |
12 | This program is distributed in the hope that it will be useful,
13 |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 |
18 |
19 | See the GNU General Public License for more details.
20 |
21 | You should have received a copy of the GNU General Public License
22 |
23 | along with this program. If not, see
24 |
25 | # Site link
26 | [HangulClock](https://hangulclock.today/)
27 |
28 |
29 | # 알림 / Alert
30 | "HangulClock For Android"는 "한글시계"Mac, Window버전을 만든 "이상훈"님과 한글시계 원작자분께 허락을 받아 개발되었습니다.
31 |
32 | "HangulClock For Android" is originated from HangulClock Mac and Window version(developer : [SangHunLee](https://github.com/dsa28s/)).
33 |
34 | # TODO
35 | - 서버로 부터 랜덤으로 문자를 받아오는 기능 추가
36 | - Getting random pharse from the server
37 |
38 | - 새로운 "이스터에그"추가(찾아보시길.. ㅎ)
39 | - adding easter egg
40 |
41 | - 간단히 날씨를 알아 볼 수 있는 기능 추가
42 | - adding weather feature
43 |
44 | - 환경설정 디자인 바꾸기..(못생겼어..)
45 | - UI update
46 |
47 | # 작동버전 / minimum os version
48 | - Android 4.4(KitKat)+
49 |
50 | # 메모 / memo
51 | - nothing to add right now
52 |
53 | # 한글시계는 컴퓨터에도 있습니다! / HangulClock also has PC and Mac version!
54 |
55 | - [HangulClock Official Site](https://hangulclock.today/)
56 | - [PC & Mac version developer github](https://github.com/dsa28s/)
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/lockscreen_set.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
18 |
23 |
24 |
25 |
30 |
31 |
36 |
37 |
42 |
47 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #2843465a
7 | #000000
8 | #2d2d2d
9 | #ffffff
10 | #081528
11 | #082f44
12 | #eef0f1
13 | #d2b4b4b4
14 | #00ffffff
15 |
16 | #ca4833
17 | #d76350
18 | #f56750
19 | #d070a3
20 | #fd93cb
21 |
22 | #f4b212
23 | #f2b728
24 | #e8be58
25 | #edce1d
26 | #f5e067
27 |
28 | #35ba0d
29 | #73ca2f
30 | #95d365
31 | #62a49d
32 | #89d7cf
33 |
34 | #113470
35 | #164594
36 | #12538f
37 | #286dc9
38 | #3c88ec
39 |
40 | #260d71
41 | #4620b7
42 | #5f3ace
43 | #7c5fd1
44 | #9782d7
45 |
46 | #540017
47 | #874054
48 | #99173b
49 | #ac2248
50 | #e2436f
51 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/shortcutsetting.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
18 |
19 |
20 |
27 |
28 |
35 |
36 |
40 |
41 |
42 |
43 |
49 |
50 |
58 |
59 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/lockscreen/LockScreen.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.lockscreen;
2 |
3 | import android.app.ActivityManager;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.provider.Settings;
8 |
9 | public class LockScreen {
10 | public static LockScreen singleton;
11 | Context context;
12 | boolean disableHomeButton=false;
13 |
14 |
15 | SharedPreferences prefs = null;
16 |
17 |
18 | public static LockScreen getInstance() {
19 | if(singleton==null){
20 | singleton = new LockScreen();
21 |
22 | }
23 | return singleton;
24 | }
25 | public void init(Context context){
26 | this.context = context;
27 |
28 |
29 | }
30 |
31 | public void init(Context context, boolean disableHomeButton){
32 | this.context = context;
33 | this.disableHomeButton = disableHomeButton;
34 |
35 | }
36 |
37 | public void showSettingAccesability(){
38 | if(!isMyServiceRunning(LockWindowAccessibilityService.class)) {
39 | Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
40 | context.startActivity(intent);
41 | }
42 | }
43 |
44 |
45 | public void active(){
46 | if(disableHomeButton){
47 | showSettingAccesability();
48 | }
49 |
50 | if(context!=null) {
51 | context.startService(new Intent(context, LockscreenService.class));
52 | }
53 | }
54 |
55 | public void deactivate(){
56 | if(context!=null) {
57 | context.stopService(new Intent(context, LockscreenService.class));
58 | }
59 | }
60 | public boolean isActive(){
61 | if(context!=null) {
62 | return isMyServiceRunning(LockscreenService.class);
63 | }else{
64 | return false;
65 | }
66 | }
67 | public boolean isMyServiceRunning(Class> serviceClass) {
68 | ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
69 | for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
70 | if (serviceClass.getName().equals(service.service.getClassName())) {
71 | return true;
72 | }
73 | }
74 | return false;
75 | }
76 |
77 |
78 |
79 | }
80 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/weathersetting.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
17 |
18 |
24 |
25 |
31 |
32 |
41 |
42 |
51 |
52 |
61 |
62 |
71 |
72 |
79 |
80 |
88 |
89 |
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/lockscreen/LockscreenService.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.lockscreen;
2 |
3 | import android.app.Notification;
4 | import android.app.NotificationManager;
5 | import android.app.PendingIntent;
6 | import android.app.Service;
7 | import android.content.BroadcastReceiver;
8 | import android.content.Context;
9 | import android.content.Intent;
10 | import android.content.IntentFilter;
11 | import android.os.IBinder;
12 | import android.util.Log;
13 |
14 | import com.leejoonhee.hangulclockforandroid.R;
15 | import com.leejoonhee.hangulclockforandroid.lockscreen.lockset;
16 |
17 |
18 | public class LockscreenService extends Service {
19 | private final String TAG = "LockscreenService";
20 | private int mServiceStartId = 0;
21 | private Context mContext = null;
22 | private NotificationManager mNM;
23 |
24 | private BroadcastReceiver mLockscreenReceiver = new BroadcastReceiver() {
25 | @Override
26 | public void onReceive(Context context, Intent intent) {
27 | if (null != context) {
28 | if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
29 | startLockscreenActivity();
30 | }
31 | }
32 | }
33 | };
34 |
35 | private void stateRecever(boolean isStartRecever) {
36 | if (isStartRecever) {
37 | IntentFilter filter = new IntentFilter();
38 | filter.addAction(Intent.ACTION_SCREEN_OFF);
39 | registerReceiver(mLockscreenReceiver, filter);
40 | } else {
41 | if (null != mLockscreenReceiver) {
42 | unregisterReceiver(mLockscreenReceiver);
43 | }
44 | }
45 | }
46 |
47 |
48 | @Override
49 | public void onCreate() {
50 | super.onCreate();
51 | mContext = this;
52 | mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
53 | showNotification();
54 | }
55 |
56 |
57 | @Override
58 | public int onStartCommand(Intent intent, int flags, int startId) {
59 | mServiceStartId = startId;
60 | stateRecever(true);
61 | Intent bundleIntet = intent;
62 | if (null != bundleIntet) {
63 | // startLockscreenActivity();
64 | Log.d(TAG, TAG + " onStartCommand intent existed");
65 | } else {
66 | Log.d(TAG, TAG + " onStartCommand intent NOT existed");
67 | }
68 | return LockscreenService.START_STICKY;
69 | }
70 |
71 |
72 |
73 |
74 |
75 | @Override
76 | public IBinder onBind(Intent intent) {
77 | return null;
78 | }
79 |
80 |
81 | @Override
82 | public void onDestroy() {
83 | stateRecever(false);
84 | mNM.cancel(((LockApplication) getApplication()).notificationId);
85 | }
86 |
87 | private void startLockscreenActivity() {
88 | Intent startLockscreenActIntent = new Intent(mContext, LockScreenActivity.class);
89 | startLockscreenActIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
90 | startActivity(startLockscreenActIntent);
91 | }
92 |
93 | /**
94 | * Show a notification while this service is running.
95 | */
96 | private void showNotification() {
97 | CharSequence text = "Running";
98 | PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
99 | new Intent(this, lockset.class), 0);
100 |
101 | Notification notification = new Notification.Builder(this)
102 | .setSmallIcon(R.drawable.logo)
103 | .setTicker(text)
104 | .setWhen(System.currentTimeMillis())
105 | .setContentTitle(getText(R.string.app_name))
106 | .setContentText(text)
107 | .setContentIntent(contentIntent)
108 | .setOngoing(true)
109 | .build();
110 |
111 | mNM.notify(((LockApplication) getApplication()).notificationId, notification);
112 | }
113 |
114 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/sentencesetting.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
25 |
26 |
32 |
33 |
40 |
41 |
42 |
43 |
51 |
52 |
59 |
60 |
68 |
69 |
77 |
78 |
86 |
87 |
95 |
96 |
104 |
105 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/labsetting.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
18 |
19 |
20 |
27 |
28 |
35 |
36 |
43 |
44 |
45 |
46 |
52 |
53 |
59 |
60 |
70 |
71 |
79 |
80 |
81 |
82 |
86 |
87 |
92 |
93 |
103 |
104 |
113 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/한글시계안드로이드_개인정보처리방침.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | 개인정보처리방침
12 |
13 |
14 |
('https://hangulclock.today'이하 '한글시계') 은(는) 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.
('한글시계') 은(는) 회사는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.
○ 본 방침은부터 2019 년 8 월 13 일부터 시행됩니다.
1. 개인정보의 처리 목적 ('https://hangulclock.today'이하 '한글시계') 은(는) 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정입니다.
가. 재화 또는 서비스 제공
맞춤 서비스 제공, 광고 등을 목적으로 개인정보를 처리합니다.
나. 마케팅 및 광고에의 활용
인구통계학적 특성에 따른 서비스 제공 및 광고 게재 등을 목적으로 개인정보를 처리합니다.
2. 개인정보 파일 현황
1. 개인정보 파일명 : 사용자선호 - 개인정보 항목 : 구글제공 - 수집방법 : 구글PlayService - 보유근거 : 알맞은 광고제공 - 보유기간 : 지체없이 파기 - 관련법령 :
3. 개인정보의 처리 및 보유 기간 ① ('한글시계') 은(는) 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집시에 동의 받은 개인정보 보유,이용기간 내에서 개인정보를 처리,보유합니다.② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다.
1.<제화 또는 서비스 제공><제화 또는 서비스 제공>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<지체없이 파기>까지 위 이용목적을 위하여 보유.이용됩니다.-보유근거 : 광고제공-관련법령 : -예외사유 : 4. 개인정보의 제3자 제공에 관한 사항 ① ('https://hangulclock.today'이하 '한글시계') 은(는) 정보주체의 동의, 법률의 특별한 규정 등 개인정보 보호법 제17조 및 제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.
② ('https://hangulclock.today') 은(는) 다음과 같이 개인정보를 제3자에게 제공하고 있습니다.1. <>- 개인정보를 제공받는 자 : - 제공받는 자의 개인정보 이용목적 : - 제공받는 자의 보유.이용기간:
5. 개인정보처리 위탁 ① ('한글시계') 은(는) 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다.
1. <>- 위탁받는 자 (수탁자) : - 위탁하는 업무의 내용 : - 위탁기간 :
② ('https://hangulclock.today'이하 '한글시계') 은(는) 위탁계약 체결시 개인정보 보호법 제25조에 따라 위탁업무 수행목적 외 개인정보 처리금지, 기술적․관리적 보호조치, 재위탁 제한, 수탁자에 대한 관리․감독, 손해배상 등 책임에 관한 사항을 계약서 등 문서에 명시하고, 수탁자가 개인정보를 안전하게 처리하는지를 감독하고 있습니다.③ 위탁업무의 내용이나 수탁자가 변경될 경우에는 지체없이 본 개인정보 처리방침을 통하여 공개하도록 하겠습니다.
15 |
16 | 6. 정보주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다.
① 정보주체는 JoonLeeStduio에 대해 언제든지 개인정보 열람,정정,삭제,처리정지 요구 등의 권리를 행사할 수 있습니다.② 제1항에 따른 권리 행사는JoonLeeStduio에 대해 개인정보 보호법 시행령 제41조제1항에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 JoonLeeStduio은(는) 이에 대해 지체 없이 조치하겠습니다.③ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.④ 개인정보 열람 및 처리정지 요구는 개인정보보호법 제35조 제5항, 제37조 제2항에 의하여 정보주체의 권리가 제한 될 수 있습니다.⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에서 그 개인정보가 수집 대상으로 명시되어 있는 경우에는 그 삭제를 요구할 수 없습니다.⑥ JoonLeeStduio은(는) 정보주체 권리에 따른 열람의 요구, 정정·삭제의 요구, 처리정지의 요구 시 열람 등 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다.
7. 처리하는 개인정보의 항목 작성 ① ('https://hangulclock.today'이하 '한글시계') 은(는) 다음의 개인정보 항목을 처리하고 있습니다.
1<제화 또는 서비스 제공>- 필수항목 : 구글제공- 선택항목 :
8. 개인정보의 파기('한글시계') 은(는) 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.
-파기절차이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.-파기기한이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.
9. 개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항
JoonLeeStduio 은 정보주체의 이용정보를 저장하고 수시로 불러오는 ‘쿠키’를 사용하지 않습니다.
10. 개인정보 보호책임자 작성
① JoonLeeStduio(‘https://hangulclock.today’이하 ‘한글시계) 은(는) 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다. ▶ 개인정보 보호책임자 성명 :이준희 직책 :메인개발자 직급 :메인개발자 연락처 :01089360086, neo81389@gmail.com, ※ 개인정보 보호 담당부서로 연결됩니다. ▶ 개인정보 보호 담당부서 부서명 : 담당자 : 연락처 :, , ② 정보주체께서는 JoonLeeStduio(‘https://hangulclock.today’이하 ‘한글시계) 의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. JoonLeeStduio(‘https://hangulclock.today’이하 ‘한글시계) 은(는) 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.
11. 개인정보 처리방침 변경
①이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.
12. 개인정보의 안전성 확보 조치 ('한글시계') 은(는) 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.
1. 개인정보의 암호화 이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의 별도 보안기능을 사용하고 있습니다.2. 비인가자에 대한 출입 통제 개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid;
2 |
3 | import android.app.Activity;
4 |
5 | import android.content.Context;
6 | import android.content.DialogInterface;
7 | import android.content.Intent;
8 | import android.content.SharedPreferences;
9 | import android.net.Uri;
10 | import android.os.AsyncTask;
11 | import android.os.Bundle;
12 | import android.os.PowerManager;
13 | import android.provider.Settings;
14 | import androidx.appcompat.app.AlertDialog;
15 | import androidx.appcompat.app.AppCompatActivity;
16 | import android.view.View;
17 | import android.widget.TextView;
18 | import android.widget.Toast;
19 | import com.google.firebase.database.DataSnapshot;
20 | import com.google.firebase.database.DatabaseError;
21 | import com.google.firebase.database.DatabaseReference;
22 | import com.google.firebase.database.FirebaseDatabase;
23 | import com.google.firebase.database.ValueEventListener;
24 | import com.leejoonhee.hangulclockforandroid.Service.HelpActivity;
25 | import com.leejoonhee.hangulclockforandroid.Service.SettingActivity;
26 |
27 | public class MainActivity extends AppCompatActivity
28 | {
29 | DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
30 |
31 | DatabaseReference download = databaseReference.child("downloads");
32 | DatabaseReference version = databaseReference.child("version");
33 | DatabaseReference notice = databaseReference.child("notice");
34 |
35 | TextView mversion;
36 | TextView mdownloads;
37 | TextView sentence;
38 |
39 | static SharedPreferences sets;
40 |
41 | static String data = "";
42 |
43 | TextView txtText;
44 |
45 | @Override
46 | protected void onCreate(Bundle savedInstanceState) {
47 | super.onCreate(savedInstanceState);
48 | setContentView(R.layout.activity_main);
49 |
50 | sentence = findViewById(R.id.sentence);
51 |
52 | sets = getSharedPreferences("usersets", Activity.MODE_PRIVATE); //MainActivity가 꺼져도 NewAppWidget에서 값을 받아 올 수 있도록 SharedPreference를 사용하였습니다
53 | sentence.setText(sets.getString("title", "설정이 필요합니다"));
54 |
55 | String str = sets.getString("title", "설정이필요합니다");
56 |
57 | txtText = (TextView) findViewById(R.id.txtText);
58 |
59 | if (str.equals("**weather**")) {
60 | sentence.setText(data);
61 | }
62 |
63 | mversion = (TextView) findViewById(R.id.version);
64 | mdownloads = (TextView) findViewById(R.id.download);
65 |
66 | PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
67 | boolean isWhiteListing = false;
68 | if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
69 | isWhiteListing = pm.isIgnoringBatteryOptimizations(getPackageName());
70 | }
71 |
72 | if (!isWhiteListing) {
73 | AlertDialog.Builder setdialog = new AlertDialog.Builder(MainActivity.this);
74 | setdialog.setTitle("추가 설정이 필요합니다.")
75 | .setMessage("어플을 문제없이 사용하기 위해서는 해당 어플을 \"배터리 사용량 최적화\" 목록에서 \"제외\"해야 합니다. 설정화면으로 이동하시겠습니까?")
76 | .setPositiveButton("네", new DialogInterface.OnClickListener() {
77 | @Override
78 | public void onClick(DialogInterface dialog, int which) {
79 | startActivity(new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS));
80 | }
81 | })
82 | .setNegativeButton("아니오", new DialogInterface.OnClickListener() {
83 | @Override
84 | public void onClick(DialogInterface dialog, int which) {
85 | Toast.makeText(MainActivity.this, "설정을 취소했습니다", Toast.LENGTH_SHORT).show();
86 | }
87 | })
88 | .create()
89 | .show();
90 | }
91 | }
92 |
93 | public void setting(View v){
94 | startActivity(new Intent(this, SettingActivity.class));
95 | }
96 |
97 | public void help(View v){
98 | startActivity(new Intent(this, HelpActivity.class));
99 | }
100 |
101 | public void pc(View v){
102 | String url ="https://github.com/dsa28s/windows-hangul-clock";
103 | Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
104 | startActivity(intent);
105 | }
106 |
107 | public void android(View v){
108 | String url ="https://github.com/neo81389/HangulClock";
109 | Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
110 | startActivity(intent);
111 | }
112 |
113 | public void update(View v){
114 | Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.leejoonhee.hangulclockforandroid"));
115 | startActivity(intent);
116 | }
117 |
118 | @Override
119 | protected void onStart(){
120 | super.onStart();
121 |
122 | notice.addValueEventListener(new ValueEventListener() {
123 | @Override
124 | public void onDataChange(DataSnapshot dataSnapshot) {
125 | String text = dataSnapshot.getValue(String.class);
126 | txtText.setText(text);
127 | }
128 |
129 | @Override
130 | public void onCancelled(DatabaseError databaseError) {
131 |
132 | }
133 | });
134 |
135 | download.addValueEventListener(new ValueEventListener() {
136 | @Override
137 | public void onDataChange(DataSnapshot dataSnapshot) {
138 | String text = dataSnapshot.getValue(String.class);
139 |
140 | mdownloads.setText(text);
141 | }
142 |
143 | @Override
144 | public void onCancelled(DatabaseError databaseError) {
145 |
146 | }
147 | });
148 |
149 | version.addValueEventListener(new ValueEventListener() {
150 | @Override
151 | public void onDataChange(DataSnapshot dataSnapshot) {
152 | String text = dataSnapshot.getValue(String.class);
153 |
154 | if(text.equals("3.2.2"))//Last Modified : Dec. 22. 2019
155 | mversion.setText("현재 최신버전입니다");
156 |
157 | else
158 | mversion.setText("[업데이트하러가기]");
159 | }
160 |
161 | @Override
162 | public void onCancelled(DatabaseError databaseError) {
163 |
164 | }
165 | });
166 |
167 | }
168 | }
169 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/mainsetting.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
18 |
24 |
25 |
26 |
32 |
33 |
43 |
44 |
52 |
53 |
54 |
55 |
61 |
62 |
68 |
69 |
79 |
80 |
88 |
89 |
90 |
91 |
97 |
98 |
104 |
105 |
115 |
116 |
124 |
125 |
126 |
127 |
133 |
134 |
140 |
141 |
151 |
152 |
160 |
161 |
162 |
163 |
164 |
165 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
27 |
28 |
31 |
32 |
35 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
53 |
54 |
55 |
56 |
57 |
58 |
61 |
62 |
63 |
64 |
67 |
68 |
69 |
70 |
71 |
74 |
75 |
78 |
79 |
80 |
81 |
82 |
85 |
86 |
89 |
90 |
91 |
92 |
93 |
96 |
97 |
100 |
101 |
102 |
103 |
104 |
107 |
108 |
111 |
112 |
113 |
114 |
115 |
118 |
119 |
120 |
122 |
123 |
124 |
125 |
126 |
129 |
130 |
131 |
136 |
137 |
141 |
142 |
143 |
144 |
148 |
149 |
150 |
151 |
152 |
153 |
156 |
157 |
158 |
159 |
160 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest (1).xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
30 |
33 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
51 |
52 |
53 |
54 |
55 |
56 |
59 |
60 |
63 |
64 |
65 |
66 |
67 |
68 |
71 |
72 |
75 |
76 |
77 |
78 |
79 |
80 |
83 |
84 |
87 |
88 |
89 |
90 |
91 |
92 |
95 |
96 |
99 |
100 |
101 |
102 |
103 |
106 |
107 |
108 |
110 |
111 |
112 |
113 |
114 |
117 |
118 |
119 |
124 |
125 |
129 |
130 |
131 |
132 |
136 |
137 |
138 |
139 |
140 |
141 |
144 |
145 |
146 |
149 |
150 |
154 |
155 |
156 |
157 |
158 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_help.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
10 |
14 |
15 |
20 |
21 |
26 |
27 |
31 |
32 |
33 |
34 |
38 |
39 |
43 |
44 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
62 |
63 |
68 |
69 |
73 |
74 |
75 |
76 |
80 |
81 |
85 |
86 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
104 |
105 |
110 |
111 |
115 |
116 |
117 |
118 |
122 |
123 |
127 |
128 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
146 |
147 |
152 |
153 |
157 |
158 |
159 |
160 |
164 |
165 |
169 |
170 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
--------------------------------------------------------------------------------
/app/src/main/java/com/leejoonhee/hangulclockforandroid/Service/SettingActivity.java:
--------------------------------------------------------------------------------
1 | package com.leejoonhee.hangulclockforandroid.Service;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.graphics.Color;
8 | import android.os.Bundle;
9 | import androidx.appcompat.app.AppCompatActivity;
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.widget.FrameLayout;
13 | import android.widget.LinearLayout;
14 | import android.widget.TextView;
15 | import android.widget.Toast;
16 |
17 | import com.leejoonhee.hangulclockforandroid.MainActivity;
18 | import com.leejoonhee.hangulclockforandroid.R;
19 | import com.leejoonhee.hangulclockforandroid.lockscreen.lockset;
20 |
21 | public class SettingActivity extends AppCompatActivity
22 | {
23 | SharedPreferences sets;
24 |
25 | LinearLayout image1;
26 | LinearLayout image2;
27 | LinearLayout image3;
28 | LinearLayout image4;
29 |
30 | TextView sentence;
31 |
32 | int pick = 0;
33 |
34 | @Override
35 | protected void onCreate(Bundle savedInstanceState){
36 | super.onCreate(savedInstanceState);
37 | setContentView(R.layout.activity_setting);
38 |
39 | changeView(0) ;
40 |
41 | Intent intent = new Intent(Intent.ACTION_MAIN);
42 |
43 | image1 = findViewById(R.id.imageView);
44 | image2 = findViewById(R.id.imageView2);
45 | image3 = findViewById(R.id.imageView4);
46 | image4 = findViewById(R.id.imageView5);
47 | sentence = findViewById(R.id.sentence);
48 |
49 | sets = getSharedPreferences("usersets", Activity.MODE_PRIVATE); //MainActivity가 꺼져도 NewAppWidget에서 값을 받아 올 수 있도록 SharedPreference를 사용하였습니다
50 | sentence.setText(sets.getString("title", "설정이 필요합니다"));
51 |
52 | String str = sets.getString("title", "프레임 색상을 설정합니다");
53 |
54 | //text color 가져오기
55 |
56 | int colorAlpha = sets.getInt("colorAlpha", 255);
57 | int colorRed = sets.getInt("colorRed", 255);
58 | int colorGreen = sets.getInt("colorGreen", 255);
59 | int colorBlue = sets.getInt("colorBlue", 255);
60 |
61 | sentence.setTextColor(Color.argb(colorAlpha, colorRed, colorGreen, colorBlue));
62 |
63 | //frame color 가져오기
64 | frameColor(sets.getInt("color", R.color.white));
65 | }
66 |
67 | void sentenceColor(int A, int R, int G, int B){
68 | sentence.setTextColor(Color.argb(A, R, G, B));
69 | }
70 |
71 | void clockColor(int Color){
72 |
73 | }
74 |
75 | public void frameColorClicked(View V) {pick = 0;}
76 |
77 | public void sentenceColorClicked(View V) {pick = 1;}
78 |
79 | //public void clockColorClicked(View V) {pick = 2;}
80 |
81 | public void setColor(int Color){
82 |
83 | SharedPreferences.Editor editor = sets.edit();
84 |
85 | if(pick == 0){
86 | editor.putInt("color", Color); //ID가"color"인 sharedpreference에 정수 "1"를 저장합니다
87 | editor.commit();
88 |
89 | frameColor(Color);
90 | Toast.makeText(getApplicationContext(), "프레임 색상이 선택되었습니다", Toast.LENGTH_SHORT).show(); //저장 버튼 클릭시 적용됨을 알리기위해 메세지를 띄웁니다
91 | }
92 |
93 | if(pick == 1){
94 |
95 | editor.putInt("colorAlpha", 255);
96 | editor.putInt("colorRed", 255);
97 | editor.putInt("colorGreen", 255);
98 | editor.putInt("colorBlue", 255);
99 | editor.commit();
100 |
101 | //sentenceColor(Color);
102 | Toast.makeText(getApplicationContext(), "문장 색상이 선택되었습니다", Toast.LENGTH_SHORT).show(); //저장 버튼 클릭시 적용됨을 알리기위해 메세지를 띄웁니다
103 | }
104 |
105 | if(pick == 2){
106 | editor.putInt("clockColor", Color);
107 | editor.commit();
108 |
109 | clockColor(Color);
110 | Toast.makeText(getApplicationContext(), "시계 색상이 선택되었습니다", Toast.LENGTH_SHORT).show(); //저장 버튼 클릭시 적용됨을 알리기위해 메세지를 띄웁니다
111 | }
112 | }
113 |
114 | public void setwhite(View v) { setColor(R.color.white); }
115 |
116 | public void setblack(View v) { setColor(R.color.black); }
117 |
118 | public void claret(View v) { setColor(R.color.claret); }
119 |
120 | public void clarett(View v) { setColor(R.color.clarett); }
121 |
122 | public void clarettt(View v) { setColor(R.color.clarettt); }
123 |
124 | public void red(View v) { setColor(R.color.red); }
125 |
126 | public void redd(View v) { setColor(R.color.redd); }
127 |
128 | public void reddd(View v) { setColor(R.color.reddd); }
129 |
130 | public void pink(View v) { setColor(R.color.pink); }
131 |
132 | public void pinkk(View v) { setColor(R.color.pinkk); }
133 |
134 | public void orange(View v) { setColor(R.color.orange); }
135 |
136 | public void orangee(View v) { setColor(R.color.orangee); }
137 |
138 | public void orangeee(View v) { setColor(R.color.orangeee); }
139 |
140 | public void yellow(View v) { setColor(R.color.yellow); }
141 |
142 | public void yelloww(View v) { setColor(R.color.yelloww); }
143 |
144 | public void green(View v) { setColor(R.color.green); }
145 |
146 | public void greenn(View v) { setColor(R.color.greenn); }
147 |
148 | public void greennn(View v) { setColor(R.color.greennn); }
149 |
150 | public void bluegreen(View v) { setColor(R.color.bluegreen); }
151 |
152 | public void bluegreenn(View v) { setColor(R.color.bluegreenn); }
153 |
154 | public void navy(View v) { setColor(R.color.navy); }
155 |
156 | public void navyy(View v) { setColor(R.color.navyy); }
157 |
158 | public void darkblue(View v) { setColor(R.color.darkblue); }
159 |
160 | public void blue(View v) { setColor(R.color.blue); }
161 |
162 | public void bluee(View v) { setColor(R.color.bluee); }
163 |
164 | public void violet(View v) { setColor(R.color.violet); }
165 |
166 | public void violett(View v) { setColor(R.color.violett); }
167 |
168 | public void violettt(View v) { setColor(R.color.violettt); }
169 |
170 | public void violetttt(View v) { setColor(R.color.violetttt); }
171 |
172 | public void violettttt(View v) { setColor(R.color.violettttt); }
173 |
174 | public void frameColor(int Color){
175 |
176 | image1.setBackgroundColor(getResources().getColor(Color));
177 | image2.setBackgroundColor(getResources().getColor(Color));
178 | image3.setBackgroundColor(getResources().getColor(Color));
179 | image4.setBackgroundColor(getResources().getColor(Color));
180 | }
181 |
182 | public void mainmenu(View V){
183 | changeView(0);
184 | sentence.setText(sets.getString("title", "receivingfail"));
185 | }
186 |
187 | public void color(View V){
188 | changeView(1) ;
189 | sentence.setText("색상을 선택해주세요");
190 | }
191 |
192 | public void sentence(View V){ startActivity(new Intent(this, SentenceActivity.class)); }
193 |
194 | public void lab(View V){
195 | changeView(5) ;
196 | sentence.setText("베타기능입니다");
197 | }
198 |
199 | public void home(View V){
200 | startActivity(new Intent(this, MainActivity.class));
201 | }
202 |
203 | public void gotolock(View V){
204 | startActivity(new Intent(this, lockset.class));
205 | }
206 |
207 | private void changeView(int index) {
208 |
209 | LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
210 |
211 | FrameLayout frame = findViewById(R.id.frame);
212 |
213 | if (frame.getChildCount() > 0) {frame.removeViewAt(0);}
214 |
215 | View view = null ; switch (index) {
216 | case 0 :
217 | view = inflater.inflate(R.layout.mainsetting, frame, false) ;
218 | break ;
219 | case 1 :
220 | view = inflater.inflate(R.layout.colorsetting, frame, false) ;
221 | break ;
222 | case 2 :
223 | view = inflater.inflate(R.layout.sentencesetting, frame, false) ;
224 | break ;
225 | case 3 :
226 | view = inflater.inflate(R.layout.weathersetting, frame, false) ;
227 | break ;
228 | case 4 :
229 | view = inflater.inflate(R.layout.shortcutsetting, frame, false) ;
230 | break ;
231 | case 5 :
232 | view = inflater.inflate(R.layout.labsetting, frame, false) ;
233 | break ;
234 | }
235 | // FrameLayout에 뷰 추가.
236 | if (view != null) { frame.addView(view) ; } }
237 |
238 | }
239 |
240 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_setting.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
12 |
13 |
17 |
18 |
21 |
22 |
28 |
29 |
39 |
40 |
46 |
47 |
51 |
52 |
58 |
59 |
70 |
71 |
82 |
83 |
94 |
95 |
106 |
107 |
118 |
119 |
130 |
131 |
132 |
133 |
138 |
139 |
150 |
151 |
162 |
163 |
174 |
175 |
186 |
187 |
198 |
199 |
210 |
211 |
212 |
213 |
218 |
219 |
230 |
231 |
242 |
243 |
254 |
255 |
266 |
267 |
278 |
279 |
290 |
291 |
292 |
293 |
298 |
299 |
310 |
311 |
322 |
323 |
334 |
335 |
346 |
347 |
358 |
359 |
370 |
371 |
372 |
373 |
378 |
379 |
390 |
391 |
402 |
403 |
414 |
415 |
426 |
427 |
438 |
439 |
450 |
451 |
452 |
453 |
458 |
459 |
470 |
471 |
482 |
483 |
494 |
495 |
506 |
507 |
518 |
519 |
530 |
531 |
532 |
533 |
534 |
535 |
543 |
544 |
545 |
553 |
554 |
555 |
563 |
564 |
565 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
585 |
586 |
594 |
595 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fatversion.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
14 |
15 |
19 |
20 |
26 |
27 |
38 |
39 |
50 |
51 |
62 |
63 |
74 |
75 |
86 |
87 |
98 |
99 |
100 |
101 |
106 |
107 |
118 |
119 |
130 |
131 |
142 |
143 |
154 |
155 |
166 |
167 |
178 |
179 |
180 |
181 |
186 |
187 |
198 |
199 |
210 |
211 |
222 |
223 |
234 |
235 |
246 |
247 |
258 |
259 |
260 |
261 |
266 |
267 |
278 |
279 |
290 |
291 |
302 |
303 |
314 |
315 |
326 |
327 |
338 |
339 |
340 |
341 |
346 |
347 |
358 |
359 |
370 |
371 |
382 |
383 |
394 |
395 |
406 |
407 |
418 |
419 |
420 |
421 |
426 |
427 |
438 |
439 |
450 |
451 |
462 |
463 |
474 |
475 |
486 |
487 |
498 |
499 |
500 |
501 |
502 |
503 |
510 |
511 |
518 |
519 |
526 |
527 |
534 |
535 |
536 |
537 |
547 |
548 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/bigsizemid.xml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
19 |
20 |
25 |
26 |
31 |
32 |
38 |
39 |
50 |
51 |
62 |
63 |
74 |
75 |
86 |
87 |
98 |
99 |
110 |
111 |
112 |
113 |
118 |
119 |
130 |
131 |
142 |
143 |
154 |
155 |
166 |
167 |
178 |
179 |
190 |
191 |
192 |
193 |
198 |
199 |
210 |
211 |
222 |
223 |
234 |
235 |
246 |
247 |
258 |
259 |
270 |
271 |
272 |
273 |
278 |
279 |
290 |
291 |
302 |
303 |
314 |
315 |
326 |
327 |
338 |
339 |
350 |
351 |
352 |
353 |
358 |
359 |
370 |
371 |
382 |
383 |
394 |
395 |
406 |
407 |
418 |
419 |
430 |
431 |
432 |
433 |
438 |
439 |
450 |
451 |
462 |
463 |
474 |
475 |
486 |
487 |
498 |
499 |
510 |
511 |
512 |
513 |
514 |
515 |
522 |
523 |
530 |
531 |
538 |
539 |
546 |
547 |
548 |
549 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/bigsizefull.xml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
19 |
20 |
25 |
26 |
31 |
32 |
38 |
39 |
50 |
51 |
62 |
63 |
74 |
75 |
86 |
87 |
98 |
99 |
110 |
111 |
112 |
113 |
118 |
119 |
130 |
131 |
142 |
143 |
154 |
155 |
166 |
167 |
178 |
179 |
190 |
191 |
192 |
193 |
198 |
199 |
210 |
211 |
222 |
223 |
234 |
235 |
246 |
247 |
258 |
259 |
270 |
271 |
272 |
273 |
278 |
279 |
290 |
291 |
302 |
303 |
314 |
315 |
326 |
327 |
338 |
339 |
350 |
351 |
352 |
353 |
358 |
359 |
370 |
371 |
382 |
383 |
394 |
395 |
406 |
407 |
418 |
419 |
430 |
431 |
432 |
433 |
438 |
439 |
450 |
451 |
462 |
463 |
474 |
475 |
486 |
487 |
498 |
499 |
510 |
511 |
512 |
513 |
514 |
515 |
522 |
523 |
530 |
531 |
538 |
539 |
546 |
547 |
548 |
549 |
--------------------------------------------------------------------------------