├── .gitignore
├── .idea
├── caches
│ └── build_file_checksums.ser
├── codeStyles
│ └── Project.xml
├── compiler.xml
├── gradle.xml
├── jarRepositories.xml
├── misc.xml
├── modules.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── dingmouren
│ │ └── androidcamerafilter
│ │ ├── App.kt
│ │ ├── FilterSplashActivity.kt
│ │ └── control
│ │ └── AdsController.kt
│ └── res
│ ├── drawable
│ ├── ic_launcher_background.xml
│ └── img_test.jpg
│ ├── layout
│ └── activity_main.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── splash_bg.png
│ ├── mipmap-xxxhdpi
│ └── ic_launcher.png
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── camerafilter
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── dingmouren
│ │ └── camerafilter
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── edgy_amber.png
│ │ ├── filmstock.png
│ │ ├── foggy_night.png
│ │ ├── hehe.jpg
│ │ ├── late_sunset.png
│ │ ├── logo.png
│ │ ├── mapping0.jpg
│ │ ├── soft_warming.png
│ │ └── wildbird.png
│ ├── java
│ │ └── com
│ │ │ └── filter
│ │ │ └── camerafilter
│ │ │ ├── CameraFilterActivity.kt
│ │ │ ├── ConstantFilters.java
│ │ │ ├── ImageFilterActivity.kt
│ │ │ ├── ImageSelectedActivity.kt
│ │ │ ├── callback
│ │ │ └── LoadAssetsImageCallback.java
│ │ │ ├── dialog
│ │ │ ├── DialogFilterList.java
│ │ │ └── DialogFilterListAdapter.java
│ │ │ ├── engine
│ │ │ └── GlideEngine.java
│ │ │ ├── listener
│ │ │ ├── EndRecordingFilterCallback.java
│ │ │ ├── StartRecordingFilterCallback.java
│ │ │ └── TakePhotoFilterCallback.java
│ │ │ ├── mgr
│ │ │ └── SelectedImageManager.kt
│ │ │ ├── util
│ │ │ └── QFileUtil.java
│ │ │ └── view
│ │ │ └── VideoControlView.java
│ └── res
│ │ ├── anim
│ │ ├── translate_dialog_in.xml
│ │ └── translate_dialog_out.xml
│ │ ├── drawable-nodpi
│ │ ├── filter_0.jpg
│ │ ├── filter_1.jpg
│ │ ├── filter_10.jpg
│ │ ├── filter_100.jpg
│ │ ├── filter_101.jpg
│ │ ├── filter_102.jpg
│ │ ├── filter_103.jpg
│ │ ├── filter_104.jpg
│ │ ├── filter_11.jpg
│ │ ├── filter_12.jpg
│ │ ├── filter_13.jpg
│ │ ├── filter_14.jpg
│ │ ├── filter_15.jpg
│ │ ├── filter_16.jpg
│ │ ├── filter_17.jpg
│ │ ├── filter_18.jpg
│ │ ├── filter_19.jpg
│ │ ├── filter_2.jpg
│ │ ├── filter_20.jpg
│ │ ├── filter_21.jpg
│ │ ├── filter_22.jpg
│ │ ├── filter_23.jpg
│ │ ├── filter_24.jpg
│ │ ├── filter_25.jpg
│ │ ├── filter_26.jpg
│ │ ├── filter_27.jpg
│ │ ├── filter_28.jpg
│ │ ├── filter_29.jpg
│ │ ├── filter_3.jpg
│ │ ├── filter_30.jpg
│ │ ├── filter_31.jpg
│ │ ├── filter_32.jpg
│ │ ├── filter_33.jpg
│ │ ├── filter_34.jpg
│ │ ├── filter_35.jpg
│ │ ├── filter_36.jpg
│ │ ├── filter_37.jpg
│ │ ├── filter_38.jpg
│ │ ├── filter_39.jpg
│ │ ├── filter_4.jpg
│ │ ├── filter_40.jpg
│ │ ├── filter_41.jpg
│ │ ├── filter_42.jpg
│ │ ├── filter_43.jpg
│ │ ├── filter_44.jpg
│ │ ├── filter_45.jpg
│ │ ├── filter_46.jpg
│ │ ├── filter_47.jpg
│ │ ├── filter_48.jpg
│ │ ├── filter_49.jpg
│ │ ├── filter_5.jpg
│ │ ├── filter_50.jpg
│ │ ├── filter_51.jpg
│ │ ├── filter_52.jpg
│ │ ├── filter_53.jpg
│ │ ├── filter_54.jpg
│ │ ├── filter_55.jpg
│ │ ├── filter_56.jpg
│ │ ├── filter_57.jpg
│ │ ├── filter_58.jpg
│ │ ├── filter_59.jpg
│ │ ├── filter_6.jpg
│ │ ├── filter_60.jpg
│ │ ├── filter_61.jpg
│ │ ├── filter_62.jpg
│ │ ├── filter_63.jpg
│ │ ├── filter_64.jpg
│ │ ├── filter_65.jpg
│ │ ├── filter_66.jpg
│ │ ├── filter_67.jpg
│ │ ├── filter_68.jpg
│ │ ├── filter_69.jpg
│ │ ├── filter_7.jpg
│ │ ├── filter_70.jpg
│ │ ├── filter_71.jpg
│ │ ├── filter_72.jpg
│ │ ├── filter_73.jpg
│ │ ├── filter_74.jpg
│ │ ├── filter_75.jpg
│ │ ├── filter_76.jpg
│ │ ├── filter_77.jpg
│ │ ├── filter_78.jpg
│ │ ├── filter_79.jpg
│ │ ├── filter_8.jpg
│ │ ├── filter_80.jpg
│ │ ├── filter_81.jpg
│ │ ├── filter_82.jpg
│ │ ├── filter_83.jpg
│ │ ├── filter_84.jpg
│ │ ├── filter_85.jpg
│ │ ├── filter_86.jpg
│ │ ├── filter_87.jpg
│ │ ├── filter_88.jpg
│ │ ├── filter_89.jpg
│ │ ├── filter_9.jpg
│ │ ├── filter_90.jpg
│ │ ├── filter_91.jpg
│ │ ├── filter_92.jpg
│ │ ├── filter_93.jpg
│ │ ├── filter_94.jpg
│ │ ├── filter_95.jpg
│ │ ├── filter_96.jpg
│ │ ├── filter_97.jpg
│ │ ├── filter_98.jpg
│ │ └── filter_99.jpg
│ │ ├── drawable
│ │ ├── img_back.png
│ │ ├── img_filter.png
│ │ ├── img_flash.png
│ │ ├── img_girl.jpg
│ │ └── img_switch_camera.png
│ │ ├── layout
│ │ ├── activity_filter_camera.xml
│ │ ├── activity_filter_image.xml
│ │ ├── activity_filter_video.xml
│ │ ├── activity_selected_image.xml
│ │ ├── dialog_filter.xml
│ │ └── item_dialog_filter.xml
│ │ ├── mipmap-xxhdpi
│ │ ├── camera_filter_cancel_icon.png
│ │ ├── camera_filter_front_back_icon.png
│ │ ├── filter_album.png
│ │ ├── filter_beauty_icon.png
│ │ ├── filter_filter_icon.png
│ │ ├── filter_vip_icon.png
│ │ ├── img_cancel.png
│ │ ├── img_confirm.png
│ │ └── selected_image_back_icon.png
│ │ └── values
│ │ ├── attr.xml
│ │ ├── strings.xml
│ │ └── style.xml
│ └── test
│ └── java
│ └── com
│ └── dingmouren
│ └── camerafilter
│ └── ExampleUnitTest.java
├── cameramain
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── bible
│ │ └── cameramain
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── camera
│ │ │ └── cameramain
│ │ │ ├── FilterMainActivity.kt
│ │ │ ├── FilterWebViewActivity.kt
│ │ │ ├── activity
│ │ │ └── FilterSettingActivity.kt
│ │ │ ├── composebase
│ │ │ ├── ComposeBase.kt
│ │ │ ├── NoIndication.kt
│ │ │ └── NoRippleTheme.kt
│ │ │ ├── const
│ │ │ └── PrivacyPolicyConst.kt
│ │ │ ├── entity
│ │ │ └── FilterSettingItemEntity.kt
│ │ │ ├── ext
│ │ │ └── AcExt.kt
│ │ │ └── util
│ │ │ └── FilterLogUtil.kt
│ └── res
│ │ ├── layout
│ │ └── activity_filter_webview.xml
│ │ └── mipmap-xxhdpi
│ │ ├── camera_filter_cancel_icon.png
│ │ ├── camera_filter_front_back_icon.png
│ │ ├── filter_main_camera_icon.png
│ │ ├── filter_main_center_bg.png
│ │ ├── filter_main_center_tip_img.png
│ │ ├── filter_main_edit_icon.png
│ │ ├── filter_main_setting_enter_icon.png
│ │ ├── filter_setting_feed_back_icon.png
│ │ ├── filter_setting_icon_privacy.png
│ │ ├── filter_setting_rate_icon.png
│ │ ├── filter_setting_right_arrow.png
│ │ └── filter_setting_share_icon.png
│ └── test
│ └── java
│ └── com
│ └── bible
│ └── cameramain
│ └── ExampleUnitTest.java
├── com.wowbeacamera.photo.jks
├── filterscene
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── call
│ │ └── scene
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── filter
│ │ │ └── scene
│ │ │ ├── filterreceiver
│ │ │ ├── FilterAllReceiver.java
│ │ │ ├── FilterBatReceiver.java
│ │ │ ├── FilterBroadCastIntent.java
│ │ │ ├── FilterBroadCastInterfaceWrapper.java
│ │ │ ├── FilterBroadCoastManager.java
│ │ │ ├── FilterHomeReceiver.java
│ │ │ ├── FilterInstallReceiver.java
│ │ │ └── FilterNetworkReceiver.java
│ │ │ ├── rxlife
│ │ │ ├── FilterLifeObserver.java
│ │ │ └── FilterReceiverConstant.java
│ │ │ ├── rxproxy
│ │ │ └── FilterBroadCastInterface.java
│ │ │ └── utils
│ │ │ ├── FilterAMUtil.java
│ │ │ ├── FilterSharePreferenceUtil.java
│ │ │ └── NetworkUtil.java
│ └── res
│ │ └── values
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── call
│ └── scene
│ └── ExampleUnitTest.java
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── imgs
├── filter_0.jpg
├── filter_1.jpg
├── filter_10.jpg
├── filter_100.jpg
├── filter_101.jpg
├── filter_102.jpg
├── filter_103.jpg
├── filter_104.jpg
├── filter_11.jpg
├── filter_12.jpg
├── filter_13.jpg
├── filter_14.jpg
├── filter_15.jpg
├── filter_16.jpg
├── filter_17.jpg
├── filter_18.jpg
├── filter_19.jpg
├── filter_2.jpg
├── filter_20.jpg
├── filter_21.jpg
├── filter_22.jpg
├── filter_23.jpg
├── filter_24.jpg
├── filter_25.jpg
├── filter_26.jpg
├── filter_27.jpg
├── filter_28.jpg
├── filter_29.jpg
├── filter_3.jpg
├── filter_30.jpg
├── filter_31.jpg
├── filter_32.jpg
├── filter_33.jpg
├── filter_34.jpg
├── filter_35.jpg
├── filter_36.jpg
├── filter_37.jpg
├── filter_38.jpg
├── filter_39.jpg
├── filter_4.jpg
├── filter_40.jpg
├── filter_41.jpg
├── filter_42.jpg
├── filter_43.jpg
├── filter_44.jpg
├── filter_45.jpg
├── filter_46.jpg
├── filter_47.jpg
├── filter_48.jpg
├── filter_49.jpg
├── filter_5.jpg
├── filter_50.jpg
├── filter_51.jpg
├── filter_52.jpg
├── filter_53.jpg
├── filter_54.jpg
├── filter_55.jpg
├── filter_56.jpg
├── filter_57.jpg
├── filter_58.jpg
├── filter_59.jpg
├── filter_6.jpg
├── filter_60.jpg
├── filter_61.jpg
├── filter_62.jpg
├── filter_63.jpg
├── filter_64.jpg
├── filter_65.jpg
├── filter_66.jpg
├── filter_67.jpg
├── filter_68.jpg
├── filter_69.jpg
├── filter_7.jpg
├── filter_70.jpg
├── filter_71.jpg
├── filter_72.jpg
├── filter_73.jpg
├── filter_74.jpg
├── filter_75.jpg
├── filter_76.jpg
├── filter_77.jpg
├── filter_78.jpg
├── filter_79.jpg
├── filter_8.jpg
├── filter_80.jpg
├── filter_81.jpg
├── filter_82.jpg
├── filter_83.jpg
├── filter_84.jpg
├── filter_85.jpg
├── filter_86.jpg
├── filter_87.jpg
├── filter_88.jpg
├── filter_89.jpg
├── filter_9.jpg
├── filter_90.jpg
├── filter_91.jpg
├── filter_92.jpg
├── filter_93.jpg
├── filter_94.jpg
├── filter_95.jpg
├── filter_96.jpg
├── filter_97.jpg
├── filter_98.jpg
├── filter_99.jpg
├── filter_img.gif
└── filter_video.gif
└── settings.gradle
/.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 |
--------------------------------------------------------------------------------
/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
22 |
23 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'org.jetbrains.kotlin.android'
3 | apply plugin: 'kotlin-android-extensions'
4 |
5 | android {
6 | compileSdkVersion 33
7 | defaultConfig {
8 | applicationId "com.dingmouren.androidcamerafilter"
9 | minSdkVersion 21
10 | targetSdkVersion 32
11 | versionCode 1
12 | versionName "1.0.0"
13 | testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
14 | }
15 | buildTypes {
16 | debug {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | release {
21 | minifyEnabled true
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 |
26 | buildFeatures {
27 | viewBinding true
28 | compose true
29 | }
30 |
31 | composeOptions {
32 | kotlinCompilerExtensionVersion compose_version
33 | kotlinCompilerVersion kotlin_version
34 | }
35 | }
36 |
37 | dependencies {
38 | implementation fileTree(include: ['*.jar'], dir: 'libs')
39 | implementation 'androidx.core:core-ktx:1.7.0'
40 | implementation 'androidx.appcompat:appcompat:1.6.1'
41 | implementation 'com.google.android.material:material:1.8.0'
42 | implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
43 | implementation project(':camerafilter')
44 | implementation project(':cameramain')
45 |
46 | implementation 'androidx.multidex:multidex:2.0.1'
47 |
48 | implementation 'com.uat.components:alive-boss:0.0.6'
49 | }
50 |
--------------------------------------------------------------------------------
/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 | -keep class com.luck.picture.lib.** { *; }
23 |
24 | -keep class com.luck.lib.camerax.** { *; }
25 |
26 | -dontwarn com.yalantis.ucrop**
27 | -keep class com.yalantis.ucrop** { *; }
28 | -keep interface com.yalantis.ucrop** { *; }
29 |
30 | -keepclassmembers class **.R$* {
31 | public static ;
32 | }
33 | -keep class **.R$*
34 |
35 | -keep class org.wysaid.nativePort.** { *; }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
12 |
14 |
16 |
17 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/dingmouren/androidcamerafilter/App.kt:
--------------------------------------------------------------------------------
1 | package com.dingmouren.androidcamerafilter
2 |
3 | import android.app.Application
4 | import androidx.multidex.MultiDex
5 |
6 | class App : Application() {
7 |
8 | override fun onCreate() {
9 | super.onCreate()
10 | MultiDex.install(this)
11 | }
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/dingmouren/androidcamerafilter/control/AdsController.kt:
--------------------------------------------------------------------------------
1 | package com.dingmouren.androidcamerafilter.control
2 |
3 | import android.app.Application
4 | import android.os.Handler
5 | import android.os.Looper
6 | import com.dingmouren.androidcamerafilter.BuildConfig
7 | import com.tradplus.bn.initTradPlus
8 |
9 | class AdsController {
10 |
11 | companion object {
12 | private var retryHandler = Handler(Looper.getMainLooper())
13 | private var adsKey = "2B34D817BB00D4EA7394A47232779E9B"
14 | fun initChatAds(application: Application){
15 | initTradPlus(application, debugLog = BuildConfig.DEBUG,{
16 |
17 | },adsKey)
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/img_test.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/drawable/img_test.jpg
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
15 |
21 |
27 |
28 |
34 |
40 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/splash_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-xxhdpi/splash_bg.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #FFFFFF
5 | #FFFFFF
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Wow! Beauty Camera & Photo Retoucher
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext {
5 | compose_version = '1.3.1'
6 | kotlin_version = '1.7.10'
7 | }
8 |
9 | repositories {
10 | google()
11 | mavenCentral()
12 | jcenter() // Warning: this repository is going to shut down soon
13 | maven { url 'https://jitpack.io' }
14 | //阿里云
15 | maven {
16 | url 'https://maven.aliyun.com/repository/public'
17 | }
18 | maven {
19 | credentials {
20 | username '63d9f7d97076152136e17e68'
21 | password 'nR3KUgpbs4ZN'
22 | }
23 | url 'https://packages.aliyun.com/maven/repository/2326137-release-InMFri/'
24 | }
25 | //第三方
26 | maven { url "https://android-sdk.is.com" }
27 | maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
28 | maven { url "https://artifact.bytedance.com/repository/pangle" }
29 | maven { url "https://sdk.tapjoy.com" }
30 | maven {
31 | url "https://s3.amazonaws.com/smaato-sdk-releases/"
32 | }
33 | maven {
34 | url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"
35 | }
36 | flatDir {
37 | dirs 'libs'
38 | }
39 | maven {
40 | allowInsecureProtocol = true
41 | url 'http://172.30.10.160:8081/nexus/content/repositories/com.ndp.paysdk' }
42 | }
43 | dependencies {
44 | classpath 'com.android.tools.build:gradle:7.1.3'
45 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
46 | // NOTE: Do not place your application dependencies here; they belong
47 | // in the individual module build.gradle files
48 | }
49 | }
50 |
51 | allprojects {
52 | repositories {
53 | google()
54 | mavenCentral()
55 | jcenter() // Warning: this repository is going to shut down soon
56 | maven { url 'https://jitpack.io' }
57 | //阿里云
58 | maven {
59 | url 'https://maven.aliyun.com/repository/public'
60 | }
61 | maven {
62 | credentials {
63 | username '63d9f7d97076152136e17e68'
64 | password 'nR3KUgpbs4ZN'
65 | }
66 | url 'https://packages.aliyun.com/maven/repository/2326137-release-InMFri/'
67 | }
68 | //第三方
69 | maven { url "https://android-sdk.is.com" }
70 | maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
71 | maven { url "https://artifact.bytedance.com/repository/pangle" }
72 | maven { url "https://sdk.tapjoy.com" }
73 | maven {
74 | url "https://s3.amazonaws.com/smaato-sdk-releases/"
75 | }
76 | maven {
77 | url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"
78 | }
79 | flatDir {
80 | dirs 'libs'
81 | }
82 | maven {
83 | allowInsecureProtocol = true
84 | url 'http://172.30.10.160:8081/nexus/content/repositories/com.ndp.paysdk' }
85 | }
86 | }
87 |
88 | task clean(type: Delete) {
89 | delete rootProject.buildDir
90 | }
91 |
--------------------------------------------------------------------------------
/camerafilter/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/camerafilter/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'org.jetbrains.kotlin.android'
3 | apply plugin: 'kotlin-android-extensions'
4 | android {
5 | compileSdkVersion 33
6 | defaultConfig {
7 | minSdkVersion 19
8 | targetSdkVersion 32
9 | versionCode 1
10 | versionName "1.0"
11 |
12 | testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
13 |
14 | }
15 |
16 | buildTypes {
17 | release {
18 | minifyEnabled false
19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
20 | }
21 | }
22 |
23 | buildFeatures {
24 | viewBinding true
25 | compose true
26 | }
27 |
28 | composeOptions {
29 | kotlinCompilerExtensionVersion compose_version
30 | kotlinCompilerVersion kotlin_version
31 | }
32 | }
33 |
34 | dependencies {
35 | implementation fileTree(include: ['*.jar'], dir: 'libs')
36 | implementation 'androidx.appcompat:appcompat:1.6.1'
37 | implementation 'com.google.android.material:material:1.8.0'
38 | implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
39 | api 'androidx.cardview:cardview:1.0.0'
40 | //All arch: armeabi, armeabi-v7a, arm64-v8a, mips, x86
41 | api 'org.wysaid:gpuimage-plus:2.5.1'
42 | api 'de.hdodenhof:circleimageview:2.0.0'
43 |
44 | //compose
45 | api "androidx.compose.ui:ui-tooling-preview:$compose_version"
46 | //ui元件
47 | api "androidx.compose.ui:ui:$compose_version"
48 | //基础库
49 | api "androidx.compose.foundation:foundation:$compose_version"
50 | api "androidx.compose.material:material:$compose_version"
51 |
52 | api "androidx.constraintlayout:constraintlayout-compose:1.0.1"
53 |
54 | api 'io.github.lucksiege:pictureselector:v3.10.8'
55 | api "com.github.bumptech.glide:glide:4.13.2"
56 |
57 | api 'com.roy.components:business-tradplus1:0.1.6'
58 | }
59 |
--------------------------------------------------------------------------------
/camerafilter/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 |
--------------------------------------------------------------------------------
/camerafilter/src/androidTest/java/com/dingmouren/camerafilter/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.dingmouren.camerafilter;
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 org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.dingmouren.camerafilter.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/camerafilter/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
19 |
22 |
24 |
25 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/edgy_amber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/edgy_amber.png
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/filmstock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/filmstock.png
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/foggy_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/foggy_night.png
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/hehe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/hehe.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/late_sunset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/late_sunset.png
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/logo.png
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/mapping0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/mapping0.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/soft_warming.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/soft_warming.png
--------------------------------------------------------------------------------
/camerafilter/src/main/assets/wildbird.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/assets/wildbird.png
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/ImageSelectedActivity.kt:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter
2 |
3 | import android.content.Intent
4 | import android.os.Bundle
5 | import androidx.appcompat.app.AppCompatActivity
6 | import com.bumptech.glide.Glide
7 | import com.dingmouren.camerafilter.R
8 | import com.filter.camerafilter.mgr.SelectedImageManager
9 | import com.filter.camerafilter.util.QFileUtil
10 | import kotlinx.android.synthetic.main.activity_selected_image.*
11 |
12 | class ImageSelectedActivity : AppCompatActivity() {
13 |
14 | override fun onCreate(savedInstanceState: Bundle?) {
15 | super.onCreate(savedInstanceState)
16 | setContentView(R.layout.activity_selected_image)
17 | val media = SelectedImageManager.selectedLocalMedia
18 | media?.apply {
19 | Glide.with(this@ImageSelectedActivity).load(QFileUtil.getImageContentUri(this@ImageSelectedActivity,media.realPath)).into(iv_selected)
20 | }
21 | iv_back.setOnClickListener {
22 | finish()
23 | }
24 |
25 | tv_Edit.setOnClickListener {
26 | startActivity(Intent(this, ImageFilterActivity::class.java))
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/callback/LoadAssetsImageCallback.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.callback;
2 |
3 | import android.content.Context;
4 | import android.content.res.AssetManager;
5 | import android.graphics.Bitmap;
6 | import android.graphics.BitmapFactory;
7 | import android.util.Log;
8 |
9 | import org.wysaid.common.Common;
10 | import org.wysaid.nativePort.CGENativeLibrary;
11 |
12 | import java.io.IOException;
13 | import java.io.InputStream;
14 |
15 |
16 | public class LoadAssetsImageCallback implements CGENativeLibrary.LoadImageCallback {
17 |
18 | private Context mContext;
19 |
20 | //Notice: the 'name' passed in is just what you write in the rule, e.g: 1.jpg
21 | //注意, 这里回传的name不包含任何路径名, 仅为具体的图片文件名如 1.jpg
22 |
23 | public LoadAssetsImageCallback(Context context) {
24 | this.mContext = context;
25 | }
26 |
27 | @Override
28 | public Bitmap loadImage(String name, Object arg) {
29 |
30 | Log.i(Common.LOG_TAG, "Loading file: " + name);
31 | AssetManager am = mContext.getAssets();
32 | InputStream is;
33 | try {
34 | is = am.open(name);
35 | } catch (IOException e) {
36 | Log.e(Common.LOG_TAG, "Can not open file " + name);
37 | return null;
38 | }
39 |
40 | return BitmapFactory.decodeStream(is);
41 | }
42 |
43 | @Override
44 | public void loadImageOK(Bitmap bmp, Object arg) {
45 | Log.i(Common.LOG_TAG, "Loading bitmap over, you can choose to recycle or cache");
46 |
47 | //The bitmap is which you returned at 'loadImage'.
48 | //You can call recycle when this function is called, or just keep it for further usage.
49 | //唯一不需要马上recycle的应用场景为 多个不同的滤镜都使用到相同的bitmap
50 | //那么可以选择缓存起来。
51 | bmp.recycle();
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/dialog/DialogFilterList.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.dialog;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import androidx.annotation.NonNull;
6 | import androidx.recyclerview.widget.LinearLayoutManager;
7 | import androidx.recyclerview.widget.OrientationHelper;
8 | import androidx.recyclerview.widget.RecyclerView;
9 | import android.view.Gravity;
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.view.WindowManager;
13 |
14 | import com.dingmouren.camerafilter.R;
15 |
16 | /**
17 | * Created by 钉某人
18 | * github: https://github.com/DingMouRen
19 | * email: naildingmouren@gmail.com
20 | */
21 |
22 | public class DialogFilterList extends Dialog {
23 |
24 | private RecyclerView mRecycler;
25 | private LinearLayoutManager mLayoutManager;
26 | private DialogFilterListAdapter mAdapter;
27 | private OnFilterChangedListener mOnFilterChangedListener;
28 |
29 | public DialogFilterList(@NonNull Context context) {
30 | super(context, R.style.BottomDialog);
31 |
32 | View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_filter,null);
33 |
34 | initView(contentView);
35 | setContentView(contentView);
36 |
37 | WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
38 | layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
39 | layoutParams.gravity = Gravity.BOTTOM;
40 | layoutParams.windowAnimations = R.style.BottomDialog_Animation;
41 | getWindow().setAttributes(layoutParams);
42 | getWindow().setDimAmount(0f);/*使用时设置窗口后面的暗淡量*/
43 | }
44 |
45 | private void initView(View contentView) {
46 | mRecycler = contentView.findViewById(R.id.recycler);
47 | mLayoutManager = new LinearLayoutManager(getContext(), OrientationHelper.HORIZONTAL,false);
48 | mAdapter = new DialogFilterListAdapter(getContext());
49 | mRecycler.setLayoutManager(mLayoutManager);
50 | mRecycler.setAdapter(mAdapter);
51 |
52 | initListener();
53 | }
54 |
55 | private void initListener() {
56 | mAdapter.setOnItemClickListener(position -> {
57 | if (null != mOnFilterChangedListener) mOnFilterChangedListener.onFilterChangedListener(position);
58 | dismiss();
59 | });
60 | }
61 |
62 | public void setOnFilterChangedListener(OnFilterChangedListener listener){
63 | this.mOnFilterChangedListener = listener;
64 | }
65 |
66 | public interface OnFilterChangedListener{
67 | void onFilterChangedListener(int position);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/dialog/DialogFilterListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.dialog;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.recyclerview.widget.RecyclerView;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.ImageView;
10 |
11 | import com.filter.camerafilter.ConstantFilters;
12 | import com.dingmouren.camerafilter.R;
13 |
14 | /**
15 | * Created by 钉某人
16 | * github: https://github.com/DingMouRen
17 | * email: naildingmouren@gmail.com
18 | */
19 |
20 | public class DialogFilterListAdapter extends RecyclerView.Adapter {
21 |
22 | private OnItemClickListener mOnItemClickListener;
23 |
24 | public static int currentIndex = 0;
25 | public DialogFilterListAdapter(Context context){}
26 |
27 | @Override
28 | public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
29 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dialog_filter,parent,false);
30 | return new ViewHolder(view);
31 | }
32 |
33 | @Override
34 | public void onBindViewHolder(final ViewHolder holder, final int position) {
35 |
36 | holder.img.setImageResource(ConstantFilters.IMG_FILTERS[position+ getStartIndex()]);
37 | holder.img.setOnClickListener(new View.OnClickListener() {
38 | @Override
39 | public void onClick(View v) {
40 | if (null != mOnItemClickListener) mOnItemClickListener.onItemClickListener(position + getStartIndex());
41 | }
42 | });
43 | }
44 |
45 | @Override
46 | public int getItemCount() {
47 | return getLength();
48 | }
49 |
50 | public class ViewHolder extends RecyclerView.ViewHolder {
51 | ImageView img;
52 | public ViewHolder(View itemView) {
53 | super(itemView);
54 | img = itemView.findViewById(R.id.img);
55 | }
56 | }
57 |
58 | public void setOnItemClickListener(OnItemClickListener listener){
59 | this.mOnItemClickListener = listener;
60 | }
61 |
62 | public interface OnItemClickListener{
63 | void onItemClickListener(int position);
64 | }
65 |
66 | private int getLength(){
67 | if(currentIndex == 0 || currentIndex == 1)return 30;
68 | if(currentIndex == -1) return ConstantFilters.IMG_FILTERS.length;
69 | return ConstantFilters.IMG_FILTERS.length - 60;
70 | }
71 |
72 | private int getStartIndex(){
73 | if(currentIndex == 0 || currentIndex == -1)return 0;
74 | if(currentIndex == 1) return 30;
75 | return 60;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/engine/GlideEngine.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.engine;
2 |
3 | import android.content.Context;
4 | import android.widget.ImageView;
5 |
6 | import com.bumptech.glide.Glide;
7 | import com.bumptech.glide.load.resource.bitmap.CenterCrop;
8 | import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
9 | import com.dingmouren.camerafilter.R;
10 | import com.luck.picture.lib.engine.ImageEngine;
11 | import com.luck.picture.lib.utils.ActivityCompatHelper;
12 |
13 | public class GlideEngine implements ImageEngine {
14 |
15 | /**
16 | * 加载图片
17 | *
18 | * @param context 上下文
19 | * @param url 资源url
20 | * @param imageView 图片承载控件
21 | */
22 | @Override
23 | public void loadImage(Context context, String url, ImageView imageView) {
24 | if (!ActivityCompatHelper.assertValidRequest(context)) {
25 | return;
26 | }
27 | Glide.with(context)
28 | .load(url)
29 | .into(imageView);
30 | }
31 |
32 | @Override
33 | public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
34 | if (!ActivityCompatHelper.assertValidRequest(context)) {
35 | return;
36 | }
37 | Glide.with(context)
38 | .load(url)
39 | .override(maxWidth, maxHeight)
40 | .into(imageView);
41 | }
42 |
43 | /**
44 | * 加载相册目录封面
45 | *
46 | * @param context 上下文
47 | * @param url 图片路径
48 | * @param imageView 承载图片ImageView
49 | */
50 | @Override
51 | public void loadAlbumCover(Context context, String url, ImageView imageView) {
52 | if (!ActivityCompatHelper.assertValidRequest(context)) {
53 | return;
54 | }
55 | Glide.with(context)
56 | .asBitmap()
57 | .load(url)
58 | .override(180, 180)
59 | .sizeMultiplier(0.5f)
60 | .transform(new CenterCrop(), new RoundedCorners(8))
61 | .placeholder(R.drawable.ps_image_placeholder)
62 | .into(imageView);
63 | }
64 |
65 |
66 | /**
67 | * 加载图片列表图片
68 | *
69 | * @param context 上下文
70 | * @param url 图片路径
71 | * @param imageView 承载图片ImageView
72 | */
73 | @Override
74 | public void loadGridImage(Context context, String url, ImageView imageView) {
75 | if (!ActivityCompatHelper.assertValidRequest(context)) {
76 | return;
77 | }
78 | Glide.with(context)
79 | .load(url)
80 | .override(200, 200)
81 | .centerCrop()
82 | .placeholder(R.drawable.ps_image_placeholder)
83 | .into(imageView);
84 | }
85 |
86 | @Override
87 | public void pauseRequests(Context context) {
88 | if (!ActivityCompatHelper.assertValidRequest(context)) {
89 | return;
90 | }
91 | Glide.with(context).pauseRequests();
92 | }
93 |
94 | @Override
95 | public void resumeRequests(Context context) {
96 | if (!ActivityCompatHelper.assertValidRequest(context)) {
97 | return;
98 | }
99 | Glide.with(context).resumeRequests();
100 | }
101 |
102 | private GlideEngine() {
103 | }
104 |
105 | private static final class InstanceHolder {
106 | static final GlideEngine instance = new GlideEngine();
107 | }
108 |
109 | public static GlideEngine createGlideEngine() {
110 | return InstanceHolder.instance;
111 | }
112 | }
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/listener/EndRecordingFilterCallback.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.listener;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.net.Uri;
7 | import android.widget.Toast;
8 |
9 | import org.wysaid.view.CameraRecordGLSurfaceView;
10 |
11 | /**
12 | * Created by dingmouren
13 | * email: naildingmouren@gmail.com
14 | * github: https://github.com/DingMouRen
15 | */
16 |
17 | public class EndRecordingFilterCallback implements CameraRecordGLSurfaceView.EndRecordingCallback {
18 | private Activity mActivity;
19 | private String mVideoFilePath;
20 |
21 | public EndRecordingFilterCallback(Activity activity){
22 | this.mActivity = activity;
23 | }
24 |
25 | public void setVideoFilePath(String videoFilePath){
26 | this.mVideoFilePath = videoFilePath;
27 | }
28 | @Override
29 | public void endRecordingOK() {
30 | mActivity.runOnUiThread(new Runnable() {
31 | @Override
32 | public void run() {
33 | Toast.makeText(mActivity,"视频保存在:"+mVideoFilePath,Toast.LENGTH_SHORT).show();
34 | mActivity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + mVideoFilePath)));
35 | }
36 | });
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/listener/StartRecordingFilterCallback.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.listener;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.widget.Toast;
6 |
7 | import org.wysaid.view.CameraRecordGLSurfaceView;
8 |
9 | /**
10 | * Created by dingmouren
11 | * email: naildingmouren@gmail.com
12 | * github: https://github.com/DingMouRen
13 | */
14 |
15 | public class StartRecordingFilterCallback implements CameraRecordGLSurfaceView.StartRecordingCallback {
16 |
17 | private Activity mActivity;
18 |
19 | public StartRecordingFilterCallback(Activity activity){
20 | this.mActivity = activity;
21 | }
22 |
23 | @Override
24 | public void startRecordingOver(final boolean success) {
25 | mActivity.runOnUiThread(new Runnable() {
26 | @Override
27 | public void run() {
28 | if (success){
29 | Toast.makeText(mActivity,"开始录制视频",Toast.LENGTH_SHORT).show();
30 | }else {
31 | Toast.makeText(mActivity,"录制视频失败",Toast.LENGTH_SHORT).show();
32 | }
33 | }
34 | });
35 |
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/listener/TakePhotoFilterCallback.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.listener;
2 |
3 | import android.content.ContentResolver;
4 | import android.content.ContentValues;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.graphics.Bitmap;
8 | import android.media.MediaScannerConnection;
9 | import android.net.Uri;
10 | import android.os.Build;
11 | import android.os.Environment;
12 | import android.os.FileUtils;
13 | import android.provider.MediaStore;
14 | import android.webkit.MimeTypeMap;
15 | import android.widget.Toast;
16 |
17 | import org.wysaid.view.CameraRecordGLSurfaceView;
18 |
19 | import java.io.BufferedOutputStream;
20 | import java.io.File;
21 | import java.io.FileInputStream;
22 | import java.io.FileNotFoundException;
23 | import java.io.FileOutputStream;
24 | import java.io.IOException;
25 | import java.io.OutputStream;
26 | import java.util.Locale;
27 |
28 | /**
29 | * Created by dingmouren
30 | * email: naildingmouren@gmail.com
31 | * github: https://github.com/DingMouRen
32 | */
33 |
34 | public class TakePhotoFilterCallback implements CameraRecordGLSurfaceView.TakePictureCallback {
35 |
36 | private Context mContext;
37 |
38 | public TakePhotoFilterCallback(Context context){
39 | this.mContext = context;
40 | }
41 |
42 | @Override
43 | public void takePictureOK(Bitmap bmp) {
44 | if (bmp != null) {
45 | File file = new File(mContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "filter_"+System.currentTimeMillis()+".jpg");
46 | savePhotoAlbum(bmp,file,mContext);
47 | bmp.recycle();
48 | Toast.makeText(mContext,"picture save at:"+file.getAbsolutePath(),Toast.LENGTH_SHORT).show();
49 | } else{
50 | Toast.makeText(mContext,"picture save fail",Toast.LENGTH_SHORT).show();
51 | }
52 | }
53 |
54 | private void savePhotoAlbum(Bitmap src, File file,Context context) {
55 | //先保存到文件
56 | OutputStream outputStream;
57 | try {
58 | outputStream = new BufferedOutputStream(new FileOutputStream(file));
59 | src.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
60 | if (!src.isRecycled()) {
61 | src.recycle();
62 | }
63 | } catch (FileNotFoundException e) {
64 | e.printStackTrace();
65 | }
66 | //再更新图库
67 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
68 | ContentValues values = new ContentValues();
69 | values.put(MediaStore.MediaColumns.DISPLAY_NAME, file.getName());
70 | values.put(MediaStore.MediaColumns.MIME_TYPE, getMimeType(file));
71 | values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM);
72 | ContentResolver contentResolver = context.getContentResolver();
73 | Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
74 | if (uri == null) {
75 | return;
76 | }
77 | try {
78 | outputStream = contentResolver.openOutputStream(uri);
79 | FileInputStream fileInputStream = new FileInputStream(file);
80 | FileUtils.copy(fileInputStream, outputStream);
81 | fileInputStream.close();
82 | outputStream.close();
83 | } catch (IOException e) {
84 | e.printStackTrace();
85 | }
86 | } else {
87 | ContentValues values = new ContentValues();
88 | values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
89 | values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
90 | values.put(MediaStore.Images.ImageColumns.DATE_TAKEN, System.currentTimeMillis() + "");
91 | context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
92 | context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath())));
93 | }
94 | }
95 |
96 | private String getSuffix(File file) {
97 | if (file == null || !file.exists() || file.isDirectory()) {
98 | return null;
99 | }
100 | String fileName = file.getName();
101 | if (fileName.equals("") || fileName.endsWith(".")) {
102 | return null;
103 | }
104 | int index = fileName.lastIndexOf(".");
105 | if (index != -1) {
106 | return fileName.substring(index + 1).toLowerCase(Locale.US);
107 | } else {
108 | return null;
109 | }
110 | }
111 |
112 | public String getMimeType(File file){
113 | String suffix = getSuffix(file);
114 | if (suffix == null) {
115 | return "file/*";
116 | }
117 | String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(suffix);
118 | if (type != null || !type.isEmpty()) {
119 | return type;
120 | }
121 | return "file/*";
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/mgr/SelectedImageManager.kt:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.mgr
2 |
3 | import com.luck.picture.lib.entity.LocalMedia
4 |
5 | object SelectedImageManager {
6 | var selectedLocalMedia : LocalMedia? = null
7 | }
--------------------------------------------------------------------------------
/camerafilter/src/main/java/com/filter/camerafilter/util/QFileUtil.java:
--------------------------------------------------------------------------------
1 | package com.filter.camerafilter.util;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.ContentValues;
5 | import android.content.Context;
6 | import android.database.Cursor;
7 | import android.graphics.Bitmap;
8 | import android.graphics.BitmapFactory;
9 | import android.net.Uri;
10 | import android.os.ParcelFileDescriptor;
11 | import android.provider.MediaStore;
12 |
13 | import java.io.File;
14 | import java.io.FileDescriptor;
15 |
16 | public class QFileUtil {
17 | public static Uri getImageContentUri(Context context, String path) {
18 | Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
19 | new String[] { MediaStore.Images.Media._ID }, MediaStore.Images.Media.DATA + "=? ",
20 | new String[] { path }, null);
21 | if (cursor != null && cursor.moveToFirst()) {
22 | @SuppressLint("Range") int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
23 | Uri baseUri = Uri.parse("content://media/external/images/media");
24 | return Uri.withAppendedPath(baseUri, "" + id);
25 | } else {
26 | // 如果图片不在手机的共享图片数据库,就先把它插入。
27 | if (new File(path).exists()) {
28 | ContentValues values = new ContentValues();
29 | values.put(MediaStore.Images.Media.DATA, path);
30 | return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
31 | } else {
32 | return null;
33 | }
34 | }
35 | }
36 |
37 | public static Bitmap getBitmapFromUri(Context context, Uri uri) {
38 | try {
39 | ParcelFileDescriptor parcelFileDescriptor =
40 | context.getContentResolver().openFileDescriptor(uri, "r");
41 | FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
42 | Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
43 | parcelFileDescriptor.close();
44 | return image;
45 | } catch (Exception e) {
46 | e.printStackTrace();
47 | }
48 | return null;
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/anim/translate_dialog_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/anim/translate_dialog_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_0.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_1.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_10.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_100.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_100.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_101.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_101.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_102.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_102.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_103.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_103.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_104.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_104.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_11.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_12.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_13.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_14.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_15.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_16.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_17.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_18.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_19.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_2.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_20.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_21.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_22.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_23.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_24.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_25.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_26.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_26.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_27.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_28.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_29.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_3.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_30.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_30.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_31.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_32.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_32.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_33.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_33.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_34.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_35.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_35.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_36.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_36.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_37.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_37.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_38.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_38.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_39.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_39.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_4.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_40.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_40.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_41.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_41.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_42.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_42.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_43.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_43.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_44.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_44.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_45.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_45.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_46.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_46.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_47.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_47.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_48.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_49.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_49.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_5.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_50.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_50.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_51.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_51.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_52.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_52.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_53.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_53.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_54.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_54.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_55.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_55.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_56.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_56.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_57.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_57.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_58.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_58.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_59.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_59.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_6.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_60.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_60.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_61.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_61.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_62.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_62.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_63.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_63.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_64.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_64.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_65.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_65.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_66.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_66.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_67.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_67.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_68.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_68.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_69.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_69.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_7.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_70.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_70.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_71.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_71.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_72.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_72.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_73.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_73.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_74.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_74.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_75.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_75.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_76.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_76.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_77.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_77.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_78.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_78.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_79.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_79.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_8.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_80.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_80.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_81.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_81.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_82.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_82.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_83.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_83.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_84.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_84.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_85.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_85.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_86.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_86.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_87.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_87.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_88.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_88.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_89.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_89.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_9.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_90.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_90.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_91.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_91.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_92.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_92.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_93.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_93.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_94.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_94.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_95.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_95.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_96.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_96.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_97.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_97.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_98.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_98.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable-nodpi/filter_99.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable-nodpi/filter_99.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable/img_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable/img_back.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable/img_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable/img_filter.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable/img_flash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable/img_flash.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable/img_girl.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable/img_girl.jpg
--------------------------------------------------------------------------------
/camerafilter/src/main/res/drawable/img_switch_camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/drawable/img_switch_camera.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/layout/activity_filter_camera.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
20 |
28 |
29 |
35 |
36 |
44 |
45 |
52 |
53 |
57 |
58 |
65 |
66 |
67 |
68 |
75 |
76 |
80 |
81 |
88 |
89 |
90 |
91 |
102 |
103 |
104 |
111 |
112 |
116 |
117 |
124 |
125 |
126 |
127 |
134 |
135 |
139 |
140 |
147 |
148 |
149 |
150 |
151 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/layout/activity_filter_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
18 |
19 |
24 |
25 |
31 |
32 |
33 |
43 |
44 |
52 |
53 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/layout/activity_filter_video.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/layout/activity_selected_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
16 |
17 |
31 |
32 |
33 |
42 |
43 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/layout/dialog_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/layout/item_dialog_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
22 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/camera_filter_cancel_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/camera_filter_cancel_icon.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/camera_filter_front_back_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/camera_filter_front_back_icon.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/filter_album.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/filter_album.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/filter_beauty_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/filter_beauty_icon.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/filter_filter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/filter_filter_icon.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/filter_vip_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/filter_vip_icon.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/img_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/img_cancel.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/img_confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/img_confirm.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/mipmap-xxhdpi/selected_image_back_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/camerafilter/src/main/res/mipmap-xxhdpi/selected_image_back_icon.png
--------------------------------------------------------------------------------
/camerafilter/src/main/res/values/attr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Wow! Beauty Camera & Photo Retoucher
3 |
4 |
--------------------------------------------------------------------------------
/camerafilter/src/main/res/values/style.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
14 |
18 |
--------------------------------------------------------------------------------
/camerafilter/src/test/java/com/dingmouren/camerafilter/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.dingmouren.camerafilter;
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 | }
--------------------------------------------------------------------------------
/cameramain/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/cameramain/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | id 'org.jetbrains.kotlin.android'
4 | id 'kotlin-android-extensions'
5 | }
6 |
7 | android {
8 | namespace 'com.camera.cameramain'
9 | compileSdk 32
10 |
11 | defaultConfig {
12 | minSdk 21
13 | targetSdk 32
14 |
15 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
16 | consumerProguardFiles "consumer-rules.pro"
17 | }
18 |
19 | buildTypes {
20 | release {
21 | minifyEnabled false
22 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | compileOptions {
26 | sourceCompatibility JavaVersion.VERSION_1_8
27 | targetCompatibility JavaVersion.VERSION_1_8
28 | }
29 |
30 | buildFeatures {
31 | viewBinding true
32 | compose true
33 | }
34 |
35 | composeOptions {
36 | kotlinCompilerExtensionVersion compose_version
37 | kotlinCompilerVersion kotlin_version
38 | }
39 | }
40 |
41 | dependencies {
42 |
43 | implementation 'androidx.appcompat:appcompat:1.6.1'
44 | implementation 'com.google.android.material:material:1.8.0'
45 | implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
46 | testImplementation 'junit:junit:4.13.2'
47 | androidTestImplementation 'androidx.test.ext:junit:1.1.5'
48 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
49 |
50 | //compose
51 | api "androidx.compose.ui:ui-tooling-preview:$compose_version"
52 | //ui元件
53 | api "androidx.compose.ui:ui:$compose_version"
54 | //基础库
55 | api "androidx.compose.foundation:foundation:$compose_version"
56 | api "androidx.compose.material:material:$compose_version"
57 |
58 | api "androidx.constraintlayout:constraintlayout-compose:1.0.1"
59 | implementation project(':camerafilter')
60 | }
--------------------------------------------------------------------------------
/cameramain/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/consumer-rules.pro
--------------------------------------------------------------------------------
/cameramain/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
--------------------------------------------------------------------------------
/cameramain/src/androidTest/java/com/bible/cameramain/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.bible.cameramain;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
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() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.bible.cameramain.test", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/cameramain/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/FilterWebViewActivity.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain
2 |
3 | import android.content.Context
4 | import android.os.Bundle
5 | import android.webkit.WebViewClient
6 | import androidx.appcompat.app.AppCompatActivity
7 | import com.camera.cameramain.ext.startExt
8 | import kotlinx.android.synthetic.main.activity_filter_webview.*
9 |
10 | class FilterWebViewActivity : AppCompatActivity() {
11 | companion object {
12 | fun start(context: Context, url:String, title:String){
13 | context.startExt {
14 | putExtra("title",title)
15 | putExtra("url",url)
16 | }
17 | }
18 | }
19 |
20 | override fun onCreate(savedInstanceState: Bundle?) {
21 | super.onCreate(savedInstanceState)
22 | setContentView(R.layout.activity_filter_webview)
23 |
24 | iv_back.setOnClickListener {
25 | finish()
26 | }
27 | val title = intent.getStringExtra("title")
28 | val url = intent.getStringExtra("url")
29 | webview.webViewClient = WebViewClient()
30 | url?.apply {
31 | webview.loadUrl(this)
32 | }
33 |
34 | tv_title.text = title
35 | }
36 | }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/activity/FilterSettingActivity.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.activity
2 |
3 | import android.os.Bundle
4 | import androidx.appcompat.app.AppCompatActivity
5 | import androidx.compose.foundation.Image
6 | import androidx.compose.foundation.background
7 | import androidx.compose.foundation.clickable
8 | import androidx.compose.foundation.layout.*
9 | import androidx.compose.foundation.lazy.LazyColumn
10 | import androidx.compose.foundation.shape.RoundedCornerShape
11 | import androidx.compose.material.Text
12 | import androidx.compose.runtime.Composable
13 | import androidx.compose.ui.Alignment
14 | import androidx.compose.ui.Modifier
15 | import androidx.compose.ui.graphics.Color
16 | import androidx.compose.ui.platform.ComposeView
17 | import androidx.compose.ui.res.painterResource
18 | import androidx.compose.ui.text.TextStyle
19 | import androidx.compose.ui.text.font.FontWeight
20 | import androidx.compose.ui.unit.dp
21 | import androidx.compose.ui.unit.sp
22 | import com.camera.cameramain.composebase.buildBaseTheme
23 | import com.camera.cameramain.composebase.localPrimaryBgColor
24 | import com.camera.cameramain.composebase.localPrimaryColor
25 | import com.camera.cameramain.R
26 | import com.camera.cameramain.entity.FilterSettingItemEntity
27 |
28 | class FilterSettingActivity : AppCompatActivity() {
29 |
30 | override fun onCreate(savedInstanceState: Bundle?) {
31 | super.onCreate(savedInstanceState)
32 |
33 | setContentView(ComposeView(this).apply {
34 | setContent {
35 | buildBaseTheme {
36 | Column(modifier = Modifier.fillMaxSize()
37 | .background(localPrimaryBgColor.current)) {
38 | createTitle()
39 | Box(
40 | modifier = Modifier
41 | .padding(top = 25.dp, start = 12.dp, end = 12.dp)
42 | .background(
43 | color = Color.White,
44 | shape = RoundedCornerShape(12.dp)
45 | )
46 | .padding(vertical = 12.dp, horizontal = 20.dp)
47 | .wrapContentHeight()
48 | ) {
49 | LazyColumn(content = {
50 | val items = FilterSettingItemEntity.getSettingItems()
51 | items(items.size){ index->
52 | buildItem(items[index])
53 | }
54 | })
55 | }
56 | }
57 | }
58 | }
59 | })
60 | }
61 |
62 | @Composable
63 | private fun createTitle(){
64 | Row(
65 | modifier = Modifier
66 | .fillMaxWidth()
67 | .height(70.dp)
68 | .background(color = Color.White),
69 | verticalAlignment = Alignment.CenterVertically
70 | ) {
71 |
72 | Spacer(modifier = Modifier.width(20.dp))
73 | Image(painter = painterResource(id = R.mipmap.selected_image_back_icon),
74 | contentDescription = null,
75 | modifier = Modifier
76 | .size(24.dp)
77 | .clickable {
78 | finish()
79 | }
80 | )
81 |
82 | Spacer(modifier = Modifier.width(11.dp))
83 |
84 | Text(text = "Setting", style = TextStyle(
85 | fontSize = 16.sp,
86 | fontWeight = FontWeight.Bold,
87 | color = localPrimaryColor.current)
88 | )
89 | }
90 | }
91 |
92 | @Composable
93 | fun buildItem(settingItemEntity: FilterSettingItemEntity){
94 |
95 | Row(modifier = Modifier
96 | .fillMaxWidth()
97 | .padding(vertical = 12.dp)
98 | .height(23.dp)
99 | .clickable {
100 | settingItemEntity.onItemClick.invoke(this)
101 | },
102 | verticalAlignment = Alignment.CenterVertically
103 | ) {
104 | Image(painter = painterResource(id = settingItemEntity.icon),
105 | contentDescription = null,
106 | modifier = Modifier.size(22.dp)
107 | )
108 | Spacer(modifier = Modifier.width(10.dp))
109 | Text(text = settingItemEntity.title, style = TextStyle(
110 | fontSize = 16.sp,
111 | color = localPrimaryColor.current
112 | ))
113 | Spacer(modifier = Modifier.weight(1f))
114 | Image(painter = painterResource(id = settingItemEntity.rightArrow),
115 | contentDescription = null,
116 | modifier = Modifier.size(8.dp,14.dp)
117 | )
118 | }
119 | }
120 | }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/composebase/ComposeBase.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.composebase
2 |
3 | import androidx.compose.foundation.LocalIndication
4 | import androidx.compose.material.ripple.LocalRippleTheme
5 | import androidx.compose.runtime.Composable
6 | import androidx.compose.runtime.CompositionLocal
7 | import androidx.compose.runtime.CompositionLocalProvider
8 | import androidx.compose.runtime.compositionLocalOf
9 | import androidx.compose.ui.graphics.Color
10 |
11 |
12 | @Composable
13 | fun buildBaseTheme(content:@Composable ()->Unit){
14 | CompositionLocalProvider(values = arrayOf(localPrimaryColor provides Color(0xFF3893FF)
15 | , localPrimaryBgColor provides Color.White,LocalRippleTheme provides NoRippleTheme,
16 | LocalIndication provides NoIndication)) {
17 | content()
18 | }
19 | }
20 |
21 | val localPrimaryColor = compositionLocalOf { throw IllegalStateException("primary color not set") }
22 |
23 | val localPrimaryBgColor = compositionLocalOf { throw IllegalStateException("primary bg color not set") }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/composebase/NoIndication.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.composebase
2 |
3 | import androidx.compose.foundation.Indication
4 | import androidx.compose.foundation.IndicationInstance
5 | import androidx.compose.foundation.interaction.InteractionSource
6 | import androidx.compose.runtime.Composable
7 | import androidx.compose.ui.graphics.drawscope.ContentDrawScope
8 |
9 | object NoIndication : Indication {
10 | private object NoIndicationInstance : IndicationInstance {
11 | override fun ContentDrawScope.drawIndication() {
12 | drawContent()
13 | }
14 | }
15 |
16 | @Composable
17 | override fun rememberUpdatedInstance(interactionSource: InteractionSource): IndicationInstance {
18 | return NoIndicationInstance
19 | }
20 | }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/composebase/NoRippleTheme.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.composebase
2 |
3 | import androidx.compose.material.ripple.RippleAlpha
4 | import androidx.compose.material.ripple.RippleTheme
5 | import androidx.compose.runtime.Composable
6 | import androidx.compose.ui.graphics.Color
7 |
8 | object NoRippleTheme : RippleTheme {
9 |
10 | @Composable
11 | override fun defaultColor(): Color {
12 | return Color.Transparent
13 | }
14 |
15 | @Composable
16 | override fun rippleAlpha(): RippleAlpha {
17 | return RippleAlpha(0f, 0f, 0f, 0f)
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/const/PrivacyPolicyConst.kt:
--------------------------------------------------------------------------------
1 | package com.dingmouren.androidcamerafilter.const
2 |
3 |
4 | const val privacyPolicyUrl = "https://sites.google.com/view/wowphotoretoucher-pra/%E4%BD%8F%E5%AE%85"
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/entity/FilterSettingItemEntity.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.entity
2 |
3 | import android.content.Context
4 | import android.content.Intent
5 | import android.net.Uri
6 | import android.widget.Toast
7 | import com.camera.cameramain.FilterWebViewActivity
8 | import com.camera.cameramain.R
9 | import com.dingmouren.androidcamerafilter.const.privacyPolicyUrl
10 |
11 | class FilterSettingItemEntity {
12 | var icon = 0
13 | var title = ""
14 | var rightArrow = 0
15 | var onItemClick : (Context)->Unit = {}
16 |
17 | companion object {
18 | fun getSettingItems():List{
19 |
20 | return mutableListOf().apply {
21 | add(FilterSettingItemEntity().apply {
22 | icon = R.mipmap.filter_setting_rate_icon
23 | title = "Rate US"
24 | rightArrow = R.mipmap.filter_setting_right_arrow
25 | onItemClick = {
26 | val intent = Intent(Intent.ACTION_VIEW)
27 | intent.data = Uri.parse("market://details?id=" + it.getPackageName())
28 | //存在手机里没安装应用市场的情况,跳转会包异常,做一个接收判断
29 | //存在手机里没安装应用市场的情况,跳转会包异常,做一个接收判断
30 | if (intent.resolveActivity(it.packageManager) != null) { //可以接收
31 | it.startActivity(intent)
32 | } else { //没有应用市场,我们通过浏览器跳转到Google Play
33 | intent.data =
34 | Uri.parse("https://play.google.com/store/apps/details?id=" + it.getPackageName())
35 | //这里存在一个极端情况就是有些用户浏览器也没有,再判断一次
36 | if (intent.resolveActivity(it.getPackageManager()) != null) { //有浏览器
37 | it.startActivity(intent)
38 | } else { //天哪,这还是智能手机吗?
39 | Toast.makeText(it, "您没安装应用市场,连浏览器也没有", Toast.LENGTH_SHORT)
40 | .show()
41 | }
42 | }
43 | }
44 | })
45 |
46 | add(FilterSettingItemEntity().apply {
47 | icon = R.mipmap.filter_setting_feed_back_icon
48 | title = "Feed Back"
49 | rightArrow = R.mipmap.filter_setting_right_arrow
50 | onItemClick = {
51 | val uri = Uri.parse("mailto:12312312312")
52 | val intent = Intent(Intent.ACTION_SENDTO, uri)
53 | it.startActivity(Intent.createChooser(intent, "请选择邮件类应用"))
54 | }
55 | })
56 |
57 | add(FilterSettingItemEntity().apply {
58 | icon = R.mipmap.filter_setting_icon_privacy
59 | title = "Privacy Policy"
60 | rightArrow = R.mipmap.filter_setting_right_arrow
61 | onItemClick = {
62 | FilterWebViewActivity.start(it, privacyPolicyUrl,"Privacy policy")
63 | }
64 | })
65 | }
66 | }
67 | }
68 |
69 | }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/ext/AcExt.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.ext
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import android.content.Intent
6 |
7 | inline fun Activity.startExt(block:Intent.()->Unit = {}){
8 | startActivity(Intent(this,T::class.java).apply(block))
9 | }
10 |
11 | inline fun Context.startExt(block:Intent.()->Unit = {}){
12 | startActivity(Intent(this,T::class.java).apply(block))
13 | }
--------------------------------------------------------------------------------
/cameramain/src/main/java/com/camera/cameramain/util/FilterLogUtil.kt:
--------------------------------------------------------------------------------
1 | package com.camera.cameramain.util
2 |
3 | import android.util.Log
4 | import com.camera.cameramain.BuildConfig
5 |
6 | class FilterLogUtil {
7 |
8 | companion object {
9 | fun logE(msg:String,tag:String = ""){
10 | if(BuildConfig.DEBUG){
11 | Log.e("inland_${tag}",msg)
12 | }
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/cameramain/src/main/res/layout/activity_filter_webview.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
22 |
23 |
34 |
35 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/camera_filter_cancel_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/camera_filter_cancel_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/camera_filter_front_back_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/camera_filter_front_back_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_main_camera_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_main_camera_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_main_center_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_main_center_bg.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_main_center_tip_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_main_center_tip_img.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_main_edit_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_main_edit_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_main_setting_enter_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_main_setting_enter_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_feed_back_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_feed_back_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_icon_privacy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_icon_privacy.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_rate_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_rate_icon.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_right_arrow.png
--------------------------------------------------------------------------------
/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_share_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/cameramain/src/main/res/mipmap-xxhdpi/filter_setting_share_icon.png
--------------------------------------------------------------------------------
/cameramain/src/test/java/com/bible/cameramain/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.bible.cameramain;
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() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/com.wowbeacamera.photo.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/com.wowbeacamera.photo.jks
--------------------------------------------------------------------------------
/filterscene/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/filterscene/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | }
4 |
5 |
6 | android {
7 | compileSdkVersion 30
8 | buildToolsVersion "30.0.3"
9 |
10 | defaultConfig {
11 | minSdkVersion 19
12 | targetSdkVersion 30
13 | versionCode 1
14 | versionName "1.0"
15 |
16 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
17 | consumerProguardFiles "consumer-rules.pro"
18 | }
19 |
20 | buildTypes {
21 | release {
22 | minifyEnabled false
23 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
24 | }
25 | }
26 | compileOptions {
27 | sourceCompatibility JavaVersion.VERSION_1_8
28 | targetCompatibility JavaVersion.VERSION_1_8
29 | }
30 | }
31 |
32 | dependencies {
33 | //前后台监听
34 | api group: 'androidx.lifecycle', name: 'lifecycle-extensions', version: '2.2.0'
35 | }
36 |
--------------------------------------------------------------------------------
/filterscene/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/filterscene/consumer-rules.pro
--------------------------------------------------------------------------------
/filterscene/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
--------------------------------------------------------------------------------
/filterscene/src/androidTest/java/com/call/scene/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.call.scene;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
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() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.mcd.component.ex.test", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/filterscene/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
35 |
36 |
37 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterAllReceiver.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.IntentFilter;
7 |
8 | import com.filter.scene.rxproxy.FilterBroadCastInterface;
9 |
10 | /**
11 | * 全局广播接受类
12 | * @author kevinbai
13 | */
14 | public class FilterAllReceiver extends BroadcastReceiver {
15 |
16 | private FilterBroadCastInterface mExInterface;
17 |
18 | @Override
19 | public void onReceive(Context context, Intent intent) {
20 | if (intent != null) {
21 | handleIntent(context,intent);
22 | }
23 | }
24 |
25 |
26 | /**
27 | * 外插广告
28 | * @param cxt
29 | */
30 | private void handleIntent(Context cxt,Intent intent) {
31 | sendCallback(cxt,intent);
32 | }
33 |
34 | private void sendCallback(Context cxt,Intent intent){
35 | if(mExInterface!=null){
36 | mExInterface.broadCast(cxt,intent.getAction(),intent);
37 | }
38 | }
39 |
40 |
41 | public void registerListener(Context cxt, FilterBroadCastInterface exInterface) {
42 | this.mExInterface=exInterface;
43 | IntentFilter filter = new IntentFilter();
44 | //优先级
45 | filter.setPriority(1000);
46 | //USB
47 | filter.addAction(Intent.ACTION_POWER_CONNECTED);
48 | filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
49 | //亮屏 灭屏 解锁
50 | filter.addAction(Intent.ACTION_SCREEN_ON);
51 | filter.addAction(Intent.ACTION_SCREEN_OFF);
52 | filter.addAction(Intent.ACTION_USER_PRESENT);
53 | //45s 倒计时
54 | filter.addAction(FilterBroadCastIntent.ACTION_ALARM_COUNT);
55 | //应用进入后台
56 | filter.addAction(FilterBroadCastIntent.ACTION_APP_IN_BACKGROUND);
57 | //第三方应用进入前台
58 | filter.addAction(FilterBroadCastIntent.ACTION_OTHER_APP_IN_FOREGROUND);
59 | //第三方应用进入后台
60 | filter.addAction(FilterBroadCastIntent.ACTION_OTHER_APP_IN_BACKGROUND);
61 | //保活回调
62 | filter.addAction(FilterBroadCastIntent.ACTION_KEEP_ALIVE_CALLBACK);
63 | //拉活回调
64 | filter.addAction(FilterBroadCastIntent.ACTION_WEEK_UP_CALLBACK);
65 | //开屏劫持
66 | filter.addAction(FilterBroadCastIntent.ACTION_SCREEN_HACK);
67 |
68 | cxt.registerReceiver(this, filter);
69 | }
70 |
71 | public void unRegister(Context cxt) {
72 | try {
73 | if (cxt != null) {
74 | cxt.unregisterReceiver(this);
75 | }
76 | } catch (Exception e) {
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterBatReceiver.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.IntentFilter;
7 |
8 | import com.filter.scene.rxproxy.FilterBroadCastInterface;
9 |
10 | /**
11 | * 电池电量检测
12 | */
13 | public class FilterBatReceiver extends BroadcastReceiver {
14 |
15 | private FilterBroadCastInterface mExInterface;
16 |
17 | @Override
18 | public void onReceive(Context context, Intent intent) {
19 | if (intent != null&&intent.getAction()!=null) {
20 | String action = intent.getAction();
21 | handleIntent(context,intent);
22 | }
23 | }
24 |
25 |
26 | /**
27 | * 外插广告
28 | * @param cxt
29 | */
30 | private void handleIntent(Context cxt,Intent intent) {
31 | sendCallback(cxt,intent);
32 | }
33 |
34 | private void sendCallback(Context cxt, Intent intent){
35 | if(mExInterface!=null){
36 | mExInterface.broadCast(cxt,intent.getAction(),intent);
37 | }
38 | }
39 |
40 | public void registerListener(Context cxt, FilterBroadCastInterface exInterface) {
41 | this.mExInterface=exInterface;
42 | IntentFilter filter = new IntentFilter();
43 | filter.setPriority(1000);
44 | filter.addAction(Intent.ACTION_BATTERY_CHANGED);
45 | cxt.registerReceiver(this, filter);
46 | }
47 |
48 | public void unRegister(Context cxt) {
49 | try {
50 | if (cxt != null) {
51 | cxt.unregisterReceiver(this);
52 | }
53 | } catch (Exception e) {
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterBroadCastIntent.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | /**
4 | * 广播action
5 | */
6 | public class FilterBroadCastIntent {
7 |
8 |
9 | /**
10 | * 自定义倒计时广播
11 | */
12 | public static final String ACTION_ALARM_COUNT="android.intent.action.ALARM_COUNT";
13 |
14 | /**
15 | * HOME
16 | */
17 | public static final String ACTION_HOME="android.intent.action.USER_HOME";
18 | /**
19 | * RECENT
20 | */
21 | public static final String ACTION_RECENT="android.intent.action.USER_RECENT";
22 |
23 | /**
24 | * WIFI CONNECT
25 | */
26 | public static final String ACTION_WIFI_CONNECT="android.intent.action.WIFI_CONNECT";
27 |
28 | /**
29 | * WIFI DISCONNECT
30 | */
31 | public static final String ACTION_WIFI_DISCONNECT="android.intent.action.WIFI_DISCONNECT";
32 |
33 | /**
34 | * NETWORK CONNECT
35 | */
36 | public static final String ACTION_NETWORK_CONNECT="android.intent.action.NETWORK_CONNECT";
37 |
38 | /**
39 | * 应用进入后台
40 | */
41 | public static final String ACTION_APP_IN_BACKGROUND="android.intent.action.APP_IN_BACKGROUND";
42 |
43 | /**
44 | * 第三方应用进入前台
45 | */
46 | public static final String ACTION_OTHER_APP_IN_FOREGROUND="android.intent.action.OTHER_APP_IN_FOREGROUND";
47 |
48 | /**
49 | * 第三方应用进入后台
50 | */
51 | public static final String ACTION_OTHER_APP_IN_BACKGROUND="android.intent.action.OTHER_APP_IN_BACKGROUND";
52 |
53 | /**
54 | * 保活回调
55 | */
56 | public static final String ACTION_KEEP_ALIVE_CALLBACK="android.intent.action.KEEP_ALIVE_CALLBACK";
57 |
58 | /**
59 | * 拉活回调
60 | */
61 | public static final String ACTION_WEEK_UP_CALLBACK="android.intent.action.WEEK_UP_CALLBACK";
62 |
63 | /**
64 | * 开屏劫持
65 | */
66 | public static final String ACTION_SCREEN_HACK="android.intent.action.SCREEN_HACK";
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterBroadCastInterfaceWrapper.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.util.Log;
6 |
7 | import com.filter.scene.rxproxy.FilterBroadCastInterface;
8 | import com.filter.scene.utils.FilterSharePreferenceUtil;
9 |
10 | public class FilterBroadCastInterfaceWrapper implements FilterBroadCastInterface {
11 | FilterBroadCastInterface wrapper;
12 | FilterBroadCastInterfaceWrapper(FilterBroadCastInterface wrapper){
13 | this.wrapper = wrapper;
14 | }
15 |
16 | @Override
17 | public void broadCast(Context cxt, String action, Intent intent) {
18 | Log.e("inland","broadCast action "+action);
19 | if(!FilterSharePreferenceUtil.getBoolean("isBackground")){
20 | Log.e("inland","is not background return");
21 | return;
22 | }
23 | wrapper.broadCast(cxt,action,intent);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterBroadCoastManager.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import com.filter.scene.rxlife.FilterLifeObserver;
7 | import com.filter.scene.rxproxy.FilterBroadCastInterface;
8 | import com.filter.scene.utils.FilterSharePreferenceUtil;
9 |
10 | /**
11 | * 广播全局管理类
12 | * @author kevin.bai
13 | */
14 | public class FilterBroadCoastManager {
15 |
16 | private static FilterBroadCoastManager mFAdsReceiver;
17 | private final Context mContext;
18 |
19 | FilterAllReceiver mAllReceiver;
20 | FilterNetworkReceiver mNetworkReceiver;
21 | FilterInstallReceiver mAddReceiver;
22 | FilterHomeReceiver mExHomeReceiver;
23 | FilterBatReceiver mExBatteryReceiver;
24 | FilterBroadCastInterface mExInterface;
25 |
26 | private FilterBroadCoastManager(Application cxt, FilterBroadCastInterface exInterface) {
27 | this.mContext = cxt;
28 | //注册全局存储
29 | FilterSharePreferenceUtil.setApplication(cxt);
30 | //注册广播
31 | mAddReceiver = new FilterInstallReceiver();
32 | mAllReceiver = new FilterAllReceiver();
33 | mNetworkReceiver = new FilterNetworkReceiver(cxt);
34 | mExHomeReceiver=new FilterHomeReceiver();
35 | mExBatteryReceiver=new FilterBatReceiver();
36 |
37 | //注册代理
38 | registerListener(exInterface);
39 | //注册生命周期
40 | FilterLifeObserver.getInstance(cxt);
41 |
42 | }
43 |
44 | public static FilterBroadCoastManager with(Application cxt, FilterBroadCastInterface exInterface) {
45 | if (null == mFAdsReceiver) {
46 | mFAdsReceiver = new FilterBroadCoastManager(cxt,exInterface);
47 | }
48 | return mFAdsReceiver;
49 | }
50 |
51 | /**
52 | * 开启注册
53 | * 为了避免多次注册,使用单例处理
54 | */
55 | private void registerListener(FilterBroadCastInterface exInterface) {
56 | //注册代理
57 | mExInterface= new FilterBroadCastInterfaceWrapper(exInterface);
58 |
59 | if (mAddReceiver != null) {
60 | mAddReceiver.registerListener(mContext,mExInterface);
61 | }
62 | if (mAllReceiver != null && mContext != null) {
63 | mAllReceiver.registerListener(mContext,mExInterface);
64 | }
65 | if (mNetworkReceiver != null) {
66 | mNetworkReceiver.registerListener(mExInterface);
67 | }
68 | if(mExHomeReceiver!=null){
69 | mExHomeReceiver.registerListener(mContext,mExInterface);
70 | }
71 | if(mExBatteryReceiver!=null){
72 | mExBatteryReceiver.registerListener(mContext,mExInterface);
73 | }
74 | }
75 |
76 | public void unRegister() {
77 | if (mAddReceiver != null) {
78 | mAddReceiver.unRegister(mContext);
79 | }
80 | if (mNetworkReceiver != null) {
81 | mNetworkReceiver.unRegister();
82 | }
83 | if (mAllReceiver != null && mContext != null) {
84 | mAllReceiver.unRegister(mContext);
85 | }
86 | if(mExHomeReceiver!=null){
87 | mExHomeReceiver.unRegister(mContext);
88 | }
89 | }
90 |
91 | }
92 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterHomeReceiver.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.IntentFilter;
7 |
8 | import com.filter.scene.rxproxy.FilterBroadCastInterface;
9 |
10 | import java.util.concurrent.TimeUnit;
11 |
12 | /**
13 | * 按键监听
14 | * 锁屏页面使用
15 | * @author kevinbai
16 | */
17 | public class FilterHomeReceiver extends BroadcastReceiver {
18 |
19 | private FilterBroadCastInterface mExInterface;
20 | private long lastTime=0L;//上次触发时间
21 |
22 | @Override
23 | public void onReceive(Context context, Intent intent) {
24 | if (intent != null) {
25 | String action = intent.getAction();
26 | if (action != null && action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
27 | String reason = intent.getStringExtra("reason");
28 | if (reason != null) {
29 | if ("homekey".equals(reason)) {
30 | //部分机型HOME按键会连续触发两次,这里用时间过滤,暂定2s
31 | long curTime=System.currentTimeMillis();
32 | if(lastTime!=0&&curTime-lastTime< TimeUnit.SECONDS.toMillis(2)){
33 | return;
34 | }
35 | handleIntent(context, FilterBroadCastIntent.ACTION_HOME,intent);
36 | lastTime=curTime;
37 | }else if ("recentapps".equals(reason)) {
38 | handleIntent(context, FilterBroadCastIntent.ACTION_RECENT,intent);
39 | }
40 | }
41 | }
42 | }
43 | }
44 |
45 |
46 | /**
47 | * 外插广告
48 | * @param cxt
49 | * @param action
50 | */
51 | private void handleIntent(Context cxt, String action,Intent intent) {
52 | sendCallback(cxt,action,intent);
53 | }
54 |
55 | private void sendCallback(Context cxt,String action,Intent intent){
56 | if(mExInterface!=null){
57 | mExInterface.broadCast(cxt,action,intent);
58 | }
59 | }
60 |
61 | public void registerListener(Context cxt, FilterBroadCastInterface exInterface) {
62 | this.mExInterface=exInterface;
63 | IntentFilter filter = new IntentFilter();
64 | filter.setPriority(1000);
65 | filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
66 | cxt.registerReceiver(this, filter);
67 | }
68 |
69 | public void unRegister(Context cxt) {
70 | try {
71 | if (cxt != null) {
72 | cxt.unregisterReceiver(this);
73 | }
74 | } catch (Exception e) {
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/filterreceiver/FilterInstallReceiver.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.filterreceiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.IntentFilter;
7 | import android.util.Log;
8 |
9 | import com.filter.scene.rxproxy.FilterBroadCastInterface;
10 |
11 | /**
12 | * 安装卸载广播
13 | * @author kevinbai
14 | */
15 | public class FilterInstallReceiver extends BroadcastReceiver {
16 |
17 | private FilterBroadCastInterface mExInterface;
18 |
19 | @Override
20 | public void onReceive(Context context, Intent intent) {
21 | Log.i("ccccccccc","CallInstallReceiver==="+intent.getAction());
22 | if (intent != null && intent.getAction() != null) {
23 | String action = intent.getAction();
24 | handleIntent(context,action,intent);
25 | }
26 | }
27 |
28 |
29 | /**
30 | * 外插广告
31 | * @param cxt
32 | * @param action
33 | */
34 | private void handleIntent(Context cxt, String action,Intent intent) {
35 | sendCallback(cxt,action,intent);
36 | }
37 |
38 | private void sendCallback(Context cxt,String action,Intent intent){
39 | if(mExInterface!=null){
40 | mExInterface.broadCast(cxt,action,intent);
41 | }
42 | }
43 |
44 |
45 | public void registerListener(Context cxt, FilterBroadCastInterface exInterface) {
46 | Log.e("cccccccc","registerListener");
47 | this.mExInterface=exInterface;
48 | IntentFilter filter = new IntentFilter();
49 | filter.setPriority(1000);
50 | filter.addAction(Intent.ACTION_PACKAGE_ADDED);
51 | filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
52 | filter.addDataScheme("package");
53 | cxt.registerReceiver(this, filter);
54 | }
55 |
56 | public void unRegister(Context cxt) {
57 | try {
58 | if (cxt != null) {
59 | cxt.unregisterReceiver(this);
60 | }
61 | } catch (Exception e) {
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/rxlife/FilterLifeObserver.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.rxlife;
2 |
3 | import android.app.Activity;
4 | import android.app.Application;
5 | import android.content.ComponentCallbacks2;
6 | import android.content.res.Configuration;
7 | import android.os.Bundle;
8 | import android.util.Log;
9 |
10 | import com.filter.scene.filterreceiver.FilterBroadCastIntent;
11 | import com.filter.scene.utils.FilterAMUtil;
12 | import com.filter.scene.utils.FilterSharePreferenceUtil;
13 |
14 | import java.lang.ref.WeakReference;
15 |
16 | import androidx.annotation.NonNull;
17 | import androidx.annotation.Nullable;
18 | import androidx.lifecycle.Lifecycle;
19 | import androidx.lifecycle.LifecycleObserver;
20 | import androidx.lifecycle.OnLifecycleEvent;
21 | import androidx.lifecycle.ProcessLifecycleOwner;
22 |
23 | /**
24 | * 保活全局管理类
25 | * @author kevin.bai
26 | */
27 | public class FilterLifeObserver implements ComponentCallbacks2, Application.ActivityLifecycleCallbacks, LifecycleObserver {
28 |
29 | /**
30 | * 当前上下文对象
31 | */
32 | private WeakReference activityReference=new WeakReference<>(null);
33 |
34 | private static FilterLifeObserver mInstance;
35 |
36 | public static FilterLifeObserver getInstance(Application cxt) {
37 | if (null == mInstance) {
38 | mInstance = new FilterLifeObserver(cxt);
39 | }
40 | return mInstance;
41 | }
42 |
43 | private FilterLifeObserver(Application application) {
44 | //应用状态监听
45 | application.registerComponentCallbacks(this);
46 | //生命周期监听
47 | application.registerActivityLifecycleCallbacks(this);
48 | //前后台监听
49 | ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
50 | FilterSharePreferenceUtil.pushBoolean("isBackground",true);
51 | }
52 |
53 | @Override
54 | public void onTrimMemory(int level) {
55 |
56 | }
57 |
58 | @Override
59 | public void onConfigurationChanged(@NonNull Configuration configuration) {
60 |
61 | }
62 |
63 | @Override
64 | public void onLowMemory() {
65 |
66 | }
67 |
68 |
69 | @Override
70 | public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {
71 |
72 | }
73 |
74 | @Override
75 | public void onActivityStarted(@NonNull Activity activity) {
76 | activityReference=new WeakReference<>(activity);
77 | FilterSharePreferenceUtil.pushBoolean("isBackground",false);
78 | Log.e("inland","is background false");
79 | }
80 |
81 | @Override
82 | public void onActivityResumed(@NonNull Activity activity) {
83 |
84 | }
85 |
86 | @Override
87 | public void onActivityPaused(@NonNull Activity activity) {
88 |
89 | }
90 |
91 | @Override
92 | public void onActivityStopped(@NonNull Activity activity) {
93 |
94 | }
95 |
96 | @Override
97 | public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {
98 |
99 | }
100 |
101 | @Override
102 | public void onActivityDestroyed(@NonNull Activity activity) {
103 |
104 | }
105 |
106 |
107 | @OnLifecycleEvent(Lifecycle.Event.ON_START)
108 | public void onForeground() {
109 | }
110 |
111 | @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
112 | public void onBackground() {
113 | if (activityReference != null) {
114 | Activity activity=activityReference.get();
115 | if(activity!=null){
116 | FilterAMUtil.send(activity, FilterBroadCastIntent.ACTION_APP_IN_BACKGROUND);
117 | }
118 | }
119 | Log.e("inland","is background true");
120 | FilterSharePreferenceUtil.pushBoolean("isBackground",true);
121 | }
122 |
123 |
124 | }
125 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/rxlife/FilterReceiverConstant.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.rxlife;
2 |
3 | /**
4 | * @author : kevinbai
5 | * date : 2021/3/29 下午2:36
6 | */
7 | public class FilterReceiverConstant {
8 |
9 | /**
10 | * 网络监听广播次数统计
11 | */
12 | public static final String NETWORK_BROADCAST_TIME ="NETWORK_BROADCAST_TIME";
13 | /**
14 | * 网络监听广播次数统计阀值
15 | * 暂时定为2,从0开始计数,因为保活回调会连续执行两次
16 | */
17 | public static final long NETWORK_BROADCAST_TIME_VALUE =5*1000;
18 |
19 |
20 | /**
21 | * 页面传递key
22 | * BUNDLE
23 | */
24 | public static final String INTENT_BUNDLE="INTENT_BUNDLE";
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/rxproxy/FilterBroadCastInterface.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.rxproxy;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | /**
7 | * @author : kevinbai
8 | * date : 2021/3/27 下午1:57
9 | */
10 | public interface FilterBroadCastInterface {
11 |
12 | void broadCast(Context cxt, String action, Intent intent);
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/utils/FilterAMUtil.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.utils;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | /**
7 | * @author : kevinbai
8 | * date : 2021/3/29 下午2:04
9 | */
10 | public class FilterAMUtil {
11 |
12 | // /**
13 | // * 延时发送广播
14 | // * @param cxt
15 | // * @param delay
16 | // */
17 | // public static void send(Context cxt, long delay, String action){
18 | // AlarmManager alarmManager = (AlarmManager) cxt.getSystemService(Context.ALARM_SERVICE);
19 | // Intent intent = new Intent(action);
20 | // intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
21 | // PendingIntent pendingIntent = PendingIntent.getBroadcast(cxt, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
22 | // alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delay, pendingIntent);
23 | // }
24 |
25 | // /**
26 | // * 延时发送广播
27 | // * 携带参数
28 | // * @param cxt
29 | // * @param delay
30 | // */
31 | // public static void send(Context cxt, long delay, String action, Bundle bundle){
32 | // AlarmManager alarmManager = (AlarmManager) cxt.getSystemService(Context.ALARM_SERVICE);
33 | // Intent intent = new Intent(action);
34 | // intent.putExtra(CallReceiverConstant.INTENT_BUNDLE,bundle);
35 | // intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
36 | // PendingIntent pendingIntent = PendingIntent.getBroadcast(cxt, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
37 | // alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delay, pendingIntent);
38 | // }
39 |
40 | /**
41 | * 发送广播
42 | * @param cxt
43 | */
44 | public static void send(Context cxt, String action){
45 | Intent intent=new Intent(action);
46 | intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
47 | cxt.sendBroadcast(intent);
48 | }
49 |
50 | // /**
51 | // * 发送广播
52 | // * @param cxt
53 | // */
54 | // public static void send(Context cxt, String action,Bundle bundle){
55 | // Intent intent=new Intent(action);
56 | // intent.putExtra(CallReceiverConstant.INTENT_BUNDLE,bundle);
57 | // intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
58 | // cxt.sendBroadcast(intent);
59 | // }
60 |
61 | // /**
62 | // * 延时循环发送广播
63 | // * 时间偏差1分钟之内
64 | // * @param cxt
65 | // * @param delay
66 | // * @param interval
67 | // * RTC 、RTC_WAKEUP 绝对时间 System.currentTimeMillis()
68 | // * ELAPSED_REALTIME ELAPSED_REALTIME_WAKEUP 相对时间 SystemClock.elapsedRealtime()
69 | // */
70 | // public static void send(Context cxt,long delay,long interval,String action){
71 | // AlarmManager alarmManager = (AlarmManager) cxt.getSystemService(Context.ALARM_SERVICE);
72 | // Intent intent = new Intent(action);
73 | // intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
74 | // PendingIntent pendingIntent = PendingIntent.getBroadcast(cxt, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
75 | // alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+delay, interval, pendingIntent);
76 | // }
77 |
78 | // /**
79 | // * 延时启动Activity
80 | // * @param cxt
81 | // * @param delay
82 | // * @param activity
83 | // */
84 | // public static void startActivity(Context cxt, long delay, Class> activity){
85 | // AlarmManager alarmManager = (AlarmManager) cxt.getSystemService(Context.ALARM_SERVICE);
86 | // Intent intent = new Intent(cxt, activity);
87 | // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
88 | // PendingIntent pendingIntent = PendingIntent.getActivity(cxt, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
89 | // if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.M) {
90 | // alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delay, pendingIntent);
91 | // } else {
92 | // alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delay, pendingIntent);
93 | // }
94 | // }
95 | }
96 |
--------------------------------------------------------------------------------
/filterscene/src/main/java/com/filter/scene/utils/NetworkUtil.java:
--------------------------------------------------------------------------------
1 | package com.filter.scene.utils;
2 |
3 | import android.content.Context;
4 | import android.net.ConnectivityManager;
5 | import android.net.NetworkInfo;
6 |
7 | /**
8 | * @author : kevinbai
9 | * date : 2021/3/29 下午1:32
10 | */
11 | public class NetworkUtil {
12 | /**
13 | * 判断Wi-Fi是否连接
14 | * @param cxt
15 | * @return
16 | */
17 | public static boolean isNetConnect(Context cxt) {
18 | try {
19 | ConnectivityManager connManager = (ConnectivityManager) cxt.getSystemService(Context.CONNECTIVITY_SERVICE);
20 | NetworkInfo mWifiInfo = connManager.getActiveNetworkInfo();
21 | return mWifiInfo.isConnected();
22 | } catch (Exception e) {
23 | }
24 | return false;
25 | }
26 |
27 | /**
28 | * 判断Wi-Fi是否连接
29 | * @param cxt
30 | * @return
31 | */
32 | public static boolean isWiFiConnect(Context cxt) {
33 | try {
34 | ConnectivityManager connManager = (ConnectivityManager) cxt.getSystemService(Context.CONNECTIVITY_SERVICE);
35 | NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
36 | return mWifiInfo.isConnected();
37 | } catch (Exception e) {
38 | }
39 | return false;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/filterscene/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
23 |
--------------------------------------------------------------------------------
/filterscene/src/test/java/com/call/scene/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.call.scene;
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() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/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 |
16 | # When configured, Gradle will run in incubating parallel mode.
17 | # This option should only be used with decoupled projects. More details, visit
18 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
19 | # org.gradle.parallel=true
20 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Jul 31 15:49:05 CST 2018
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-7.4-bin.zip
7 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/imgs/filter_0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_0.jpg
--------------------------------------------------------------------------------
/imgs/filter_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_1.jpg
--------------------------------------------------------------------------------
/imgs/filter_10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_10.jpg
--------------------------------------------------------------------------------
/imgs/filter_100.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_100.jpg
--------------------------------------------------------------------------------
/imgs/filter_101.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_101.jpg
--------------------------------------------------------------------------------
/imgs/filter_102.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_102.jpg
--------------------------------------------------------------------------------
/imgs/filter_103.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_103.jpg
--------------------------------------------------------------------------------
/imgs/filter_104.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_104.jpg
--------------------------------------------------------------------------------
/imgs/filter_11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_11.jpg
--------------------------------------------------------------------------------
/imgs/filter_12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_12.jpg
--------------------------------------------------------------------------------
/imgs/filter_13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_13.jpg
--------------------------------------------------------------------------------
/imgs/filter_14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_14.jpg
--------------------------------------------------------------------------------
/imgs/filter_15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_15.jpg
--------------------------------------------------------------------------------
/imgs/filter_16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_16.jpg
--------------------------------------------------------------------------------
/imgs/filter_17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_17.jpg
--------------------------------------------------------------------------------
/imgs/filter_18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_18.jpg
--------------------------------------------------------------------------------
/imgs/filter_19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_19.jpg
--------------------------------------------------------------------------------
/imgs/filter_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_2.jpg
--------------------------------------------------------------------------------
/imgs/filter_20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_20.jpg
--------------------------------------------------------------------------------
/imgs/filter_21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_21.jpg
--------------------------------------------------------------------------------
/imgs/filter_22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_22.jpg
--------------------------------------------------------------------------------
/imgs/filter_23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_23.jpg
--------------------------------------------------------------------------------
/imgs/filter_24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_24.jpg
--------------------------------------------------------------------------------
/imgs/filter_25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_25.jpg
--------------------------------------------------------------------------------
/imgs/filter_26.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_26.jpg
--------------------------------------------------------------------------------
/imgs/filter_27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_27.jpg
--------------------------------------------------------------------------------
/imgs/filter_28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_28.jpg
--------------------------------------------------------------------------------
/imgs/filter_29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_29.jpg
--------------------------------------------------------------------------------
/imgs/filter_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_3.jpg
--------------------------------------------------------------------------------
/imgs/filter_30.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_30.jpg
--------------------------------------------------------------------------------
/imgs/filter_31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_31.jpg
--------------------------------------------------------------------------------
/imgs/filter_32.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_32.jpg
--------------------------------------------------------------------------------
/imgs/filter_33.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_33.jpg
--------------------------------------------------------------------------------
/imgs/filter_34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_34.jpg
--------------------------------------------------------------------------------
/imgs/filter_35.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_35.jpg
--------------------------------------------------------------------------------
/imgs/filter_36.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_36.jpg
--------------------------------------------------------------------------------
/imgs/filter_37.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_37.jpg
--------------------------------------------------------------------------------
/imgs/filter_38.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_38.jpg
--------------------------------------------------------------------------------
/imgs/filter_39.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_39.jpg
--------------------------------------------------------------------------------
/imgs/filter_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_4.jpg
--------------------------------------------------------------------------------
/imgs/filter_40.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_40.jpg
--------------------------------------------------------------------------------
/imgs/filter_41.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_41.jpg
--------------------------------------------------------------------------------
/imgs/filter_42.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_42.jpg
--------------------------------------------------------------------------------
/imgs/filter_43.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_43.jpg
--------------------------------------------------------------------------------
/imgs/filter_44.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_44.jpg
--------------------------------------------------------------------------------
/imgs/filter_45.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_45.jpg
--------------------------------------------------------------------------------
/imgs/filter_46.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_46.jpg
--------------------------------------------------------------------------------
/imgs/filter_47.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_47.jpg
--------------------------------------------------------------------------------
/imgs/filter_48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_48.jpg
--------------------------------------------------------------------------------
/imgs/filter_49.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_49.jpg
--------------------------------------------------------------------------------
/imgs/filter_5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_5.jpg
--------------------------------------------------------------------------------
/imgs/filter_50.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_50.jpg
--------------------------------------------------------------------------------
/imgs/filter_51.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_51.jpg
--------------------------------------------------------------------------------
/imgs/filter_52.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_52.jpg
--------------------------------------------------------------------------------
/imgs/filter_53.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_53.jpg
--------------------------------------------------------------------------------
/imgs/filter_54.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_54.jpg
--------------------------------------------------------------------------------
/imgs/filter_55.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_55.jpg
--------------------------------------------------------------------------------
/imgs/filter_56.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_56.jpg
--------------------------------------------------------------------------------
/imgs/filter_57.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_57.jpg
--------------------------------------------------------------------------------
/imgs/filter_58.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_58.jpg
--------------------------------------------------------------------------------
/imgs/filter_59.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_59.jpg
--------------------------------------------------------------------------------
/imgs/filter_6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_6.jpg
--------------------------------------------------------------------------------
/imgs/filter_60.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_60.jpg
--------------------------------------------------------------------------------
/imgs/filter_61.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_61.jpg
--------------------------------------------------------------------------------
/imgs/filter_62.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_62.jpg
--------------------------------------------------------------------------------
/imgs/filter_63.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_63.jpg
--------------------------------------------------------------------------------
/imgs/filter_64.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_64.jpg
--------------------------------------------------------------------------------
/imgs/filter_65.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_65.jpg
--------------------------------------------------------------------------------
/imgs/filter_66.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_66.jpg
--------------------------------------------------------------------------------
/imgs/filter_67.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_67.jpg
--------------------------------------------------------------------------------
/imgs/filter_68.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_68.jpg
--------------------------------------------------------------------------------
/imgs/filter_69.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_69.jpg
--------------------------------------------------------------------------------
/imgs/filter_7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_7.jpg
--------------------------------------------------------------------------------
/imgs/filter_70.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_70.jpg
--------------------------------------------------------------------------------
/imgs/filter_71.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_71.jpg
--------------------------------------------------------------------------------
/imgs/filter_72.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_72.jpg
--------------------------------------------------------------------------------
/imgs/filter_73.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_73.jpg
--------------------------------------------------------------------------------
/imgs/filter_74.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_74.jpg
--------------------------------------------------------------------------------
/imgs/filter_75.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_75.jpg
--------------------------------------------------------------------------------
/imgs/filter_76.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_76.jpg
--------------------------------------------------------------------------------
/imgs/filter_77.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_77.jpg
--------------------------------------------------------------------------------
/imgs/filter_78.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_78.jpg
--------------------------------------------------------------------------------
/imgs/filter_79.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_79.jpg
--------------------------------------------------------------------------------
/imgs/filter_8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_8.jpg
--------------------------------------------------------------------------------
/imgs/filter_80.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_80.jpg
--------------------------------------------------------------------------------
/imgs/filter_81.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_81.jpg
--------------------------------------------------------------------------------
/imgs/filter_82.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_82.jpg
--------------------------------------------------------------------------------
/imgs/filter_83.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_83.jpg
--------------------------------------------------------------------------------
/imgs/filter_84.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_84.jpg
--------------------------------------------------------------------------------
/imgs/filter_85.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_85.jpg
--------------------------------------------------------------------------------
/imgs/filter_86.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_86.jpg
--------------------------------------------------------------------------------
/imgs/filter_87.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_87.jpg
--------------------------------------------------------------------------------
/imgs/filter_88.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_88.jpg
--------------------------------------------------------------------------------
/imgs/filter_89.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_89.jpg
--------------------------------------------------------------------------------
/imgs/filter_9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_9.jpg
--------------------------------------------------------------------------------
/imgs/filter_90.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_90.jpg
--------------------------------------------------------------------------------
/imgs/filter_91.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_91.jpg
--------------------------------------------------------------------------------
/imgs/filter_92.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_92.jpg
--------------------------------------------------------------------------------
/imgs/filter_93.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_93.jpg
--------------------------------------------------------------------------------
/imgs/filter_94.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_94.jpg
--------------------------------------------------------------------------------
/imgs/filter_95.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_95.jpg
--------------------------------------------------------------------------------
/imgs/filter_96.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_96.jpg
--------------------------------------------------------------------------------
/imgs/filter_97.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_97.jpg
--------------------------------------------------------------------------------
/imgs/filter_98.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_98.jpg
--------------------------------------------------------------------------------
/imgs/filter_99.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_99.jpg
--------------------------------------------------------------------------------
/imgs/filter_img.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_img.gif
--------------------------------------------------------------------------------
/imgs/filter_video.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/newPersonKing/AndroidCameraFilter/169c63d042226a0a9de36bdd9f512df9c4d2577f/imgs/filter_video.gif
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':camerafilter'
2 | include ':cameramain'
3 | include ':filterscene'
4 |
--------------------------------------------------------------------------------