diff --git a/android-example/app/app/release/app-app-release.apk b/android-example/app/app/release/app-app-release.apk new file mode 100644 index 0000000..63e1246 Binary files /dev/null and b/android-example/app/app/release/app-app-release.apk differ diff --git a/android-example/app/app/release/output-metadata.json b/android-example/app/app/release/output-metadata.json new file mode 100644 index 0000000..d4bd0ce --- /dev/null +++ b/android-example/app/app/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "net.irext.ircontrol", + "variantName": "appRelease", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 7, + "versionName": "1.5.0", + "outputFile": "app-app-release.apk" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/android-example/app/build.gradle b/android-example/app/build.gradle index 611e5aa..7b69887 100644 --- a/android-example/app/build.gradle +++ b/android-example/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 + compileSdk 36 defaultConfig { applicationId "net.irext.ircontrol" - minSdkVersion 19 - targetSdkVersion 28 - versionCode 6 - versionName '0.2.4' + targetSdkVersion 36 + minSdkVersion 26 + versionCode 7 + versionName '1.5.0' } buildTypes { release { @@ -15,25 +15,35 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - sourceSets.main { - jniLibs.srcDirs = ['src/main/jniLibs'] - } - repositories { - mavenCentral() - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - } - compileOptions { + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } } + + flavorDimensions = ['app'] + productFlavors { + app { + ndk { + abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + } + } } namespace 'net.irext.ircontrol' } dependencies { + implementation project(':decodesdk') + implementation project(':web-api') + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(dir: 'libs', include: ['*.aar']) + implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:support-v4:28.0.0' - implementation 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT' - implementation project(':decodesdk') - implementation project(':web-api') + + implementation 'com.android.support:multidex:1.0.3' + } \ No newline at end of file diff --git a/android-example/app/libs/activeandroid-3.1.0.jar b/android-example/app/libs/activeandroid-3.1.0.jar new file mode 100644 index 0000000..28b494e Binary files /dev/null and b/android-example/app/libs/activeandroid-3.1.0.jar differ diff --git a/android-example/app/libs/web-api.aar b/android-example/app/libs/web-api.aar deleted file mode 100644 index be92dad..0000000 Binary files a/android-example/app/libs/web-api.aar and /dev/null differ diff --git a/android-example/app/src/main/AndroidManifest.xml b/android-example/app/src/main/AndroidManifest.xml index 6e5b411..59bbe6d 100644 --- a/android-example/app/src/main/AndroidManifest.xml +++ b/android-example/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + @@ -15,12 +14,14 @@ android:icon="@mipmap/ir_logo" android:label="@string/app_name" android:supportsRtl="true" + android:requestLegacyExternalStorage="true" android:networkSecurityConfig="@xml/network_security_config" android:theme="@android:style/Theme.Holo.Light.DarkActionBar"> diff --git a/android-example/app/src/main/java/net/irext/ircontrol/IRApplication.java b/android-example/app/src/main/java/net/irext/ircontrol/IRApplication.java index d89c43c..31235a5 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/IRApplication.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/IRApplication.java @@ -71,4 +71,8 @@ public class IRApplication extends com.activeandroid.app.Application { } }.start(); } + + public static String getApplicationName() { + return IRApplication.class.getPackageName(); + } } diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/MainActivity.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/MainActivity.java index cb02d2c..c12439b 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/MainActivity.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/MainActivity.java @@ -11,16 +11,20 @@ import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.ActivityCompat; import android.support.v4.app.FragmentManager; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.MenuItem; import android.view.View; +import android.widget.Toast; import net.irext.ircontrol.R; import net.irext.ircontrol.bean.RemoteControl; import net.irext.ircontrol.ui.fragment.MainFragment; import net.irext.ircontrol.utils.MessageUtil; import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; /** * Filename: MainActivity.java @@ -37,6 +41,11 @@ public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName(); + private boolean mReadPermissionGranted = false; + + private boolean mWritePermissionGranted = false; + private static final int PERMISSIONS_REQUEST_STORAGE = 1001; + public static final int CMD_GOTO_CONTROL = 0; private RemoteControl mCurrentRemoteControl; @@ -62,6 +71,7 @@ public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); + checkAndRequestStoragePermissions(); } @Override @@ -98,49 +108,64 @@ public class MainActivity extends AppCompatActivity { gotoCreateNew(); } }); - isReadStoragePermissionGranted(); - isWriteStoragePermissionGranted(); } - public void isReadStoragePermissionGranted() { - if (Build.VERSION.SDK_INT >= 23) { - if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) - == PackageManager.PERMISSION_GRANTED) { - Log.v(TAG,"read permission is granted"); - } else { + private void checkAndRequestStoragePermissions() { + boolean readGranted = ContextCompat.checkSelfPermission(this, + Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; + boolean writeGranted = ContextCompat.checkSelfPermission(this, + Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; - Log.v(TAG,"read permission is revoked"); - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 3); - } + List permissionsToRequest = new ArrayList<>(); + + if (!readGranted) { + permissionsToRequest.add(Manifest.permission.READ_EXTERNAL_STORAGE); + Log.w(TAG, "read external storage permission not granted"); } - else { //permission is automatically granted on sdk<23 upon installation - Log.v(TAG,"read permission is granted"); + + if (!writeGranted) { + permissionsToRequest.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + Log.w(TAG, "write external storage permission not granted"); + } + + if (!permissionsToRequest.isEmpty()) { + Log.d(TAG, "requesting permission: " + String.join(", ", permissionsToRequest)); + ActivityCompat.requestPermissions(this, + permissionsToRequest.toArray(new String[0]), + PERMISSIONS_REQUEST_STORAGE); + } else { + Log.i(TAG, "storage permissions already granted."); + mReadPermissionGranted = true; + mWritePermissionGranted = true; } } - public void isWriteStoragePermissionGranted() { - if (Build.VERSION.SDK_INT >= 23) { - if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) - == PackageManager.PERMISSION_GRANTED) { - Log.v(TAG,"write permission is granted"); - } else { - - Log.v(TAG,"write permission is revoked"); - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2); - } - } - else { - // permission is automatically granted on sdk<23 upon installation - Log.v(TAG,"write permission is granted"); + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == PERMISSIONS_REQUEST_STORAGE) { + Log.d(TAG, "storage permission requested successfully"); + mReadPermissionGranted = true; + mWritePermissionGranted = true; } } private void gotoCreateNew() { + if (!mReadPermissionGranted || !mWritePermissionGranted) { + Log.e(TAG, "storage read and write permission not granted"); + Toast.makeText(this, this.getString(R.string.storage_permission_warning), Toast.LENGTH_SHORT).show(); + checkAndRequestStoragePermissions(); + } Intent intent = new Intent(this, CreateActivity.class); startActivity(intent); } private void gotoControl() { + if (!mReadPermissionGranted || !mWritePermissionGranted) { + Log.e(TAG, "storage read and write permission not granted"); + Toast.makeText(this, this.getString(R.string.storage_permission_warning), Toast.LENGTH_SHORT).show(); + checkAndRequestStoragePermissions(); + } Intent intent = new Intent(this, ControlActivity.class); Bundle bundle = new Bundle(); bundle.putLong(ControlActivity.KEY_REMOTE_ID, mCurrentRemoteControl.getID()); @@ -167,10 +192,4 @@ public class MainActivity extends AppCompatActivity { } } } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, - @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - } } diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java index 0137d17..66222bd 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java @@ -132,7 +132,7 @@ public class ControlFragment extends Fragment implements View.OnClickListener { mCurrentRemoteControl = RemoteControl.getRemoteControl(mRemoteID); if (null != mCurrentRemoteControl) { int category = mCurrentRemoteControl.getCategoryId(); - String binFileName = FileUtils.BIN_PATH + FileUtils.FILE_NAME_PREFIX + + String binFileName = FileUtils.binDir + FileUtils.FILE_NAME_PREFIX + mCurrentRemoteControl.getRemoteMap() + FileUtils.FILE_NAME_EXT; /* decode SDK - load binary file */ @@ -234,6 +234,14 @@ public class ControlFragment extends Fragment implements View.OnClickListener { } else if (id == R.id.iv_menu) { decoded = irControl(KEY_MENU); } + + // debug decoded value + String decodedValue = ""; + for (int i = 0; i < decoded.length; i++) { + decodedValue += decoded[i]; + decodedValue += ","; + } + Log.d(TAG, "decodedValue : " + decodedValue); // send decoded integer array to IR emitter ConsumerIrManager irEmitter = (ConsumerIrManager) mParent.getSystemService(Context.CONSUMER_IR_SERVICE); diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/IndexFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/IndexFragment.java index feece3d..3ecbdf2 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/IndexFragment.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/IndexFragment.java @@ -145,10 +145,11 @@ public class IndexFragment extends BaseCreateFragment { } private boolean createDirectory() { - File file = new File(FileUtils.BIN_PATH); + File file = new File(FileUtils.binDir); if (file.exists()) { return true; } + Log.d(TAG, "create directory : " + file.getAbsolutePath()); return file.mkdirs(); } @@ -157,7 +158,7 @@ public class IndexFragment extends BaseCreateFragment { @Override public void run() { if (createDirectory()) { - File binFile = new File(FileUtils.BIN_PATH + + File binFile = new File(FileUtils.binDir + FileUtils.FILE_NAME_PREFIX + mCurrentIndex.getRemoteMap() + FileUtils.FILE_NAME_EXT); boolean ret = FileUtils.write(binFile, mBinStream); diff --git a/android-example/app/src/main/java/net/irext/ircontrol/utils/FileUtils.java b/android-example/app/src/main/java/net/irext/ircontrol/utils/FileUtils.java index 2339993..f344891 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/utils/FileUtils.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/utils/FileUtils.java @@ -2,6 +2,7 @@ package net.irext.ircontrol.utils; import android.os.Environment; import android.util.Log; +import net.irext.ircontrol.IRApplication; import java.io.*; @@ -20,9 +21,9 @@ public class FileUtils { private static final String TAG = FileUtils.class.getSimpleName(); - public static final String BASE_PATH = Environment.getExternalStorageDirectory() + File.separator + - "irext" + File.separator; - public static final String BIN_PATH = BASE_PATH + "bin" + File.separator; + public static final String packageDataDir = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + + Environment.DIRECTORY_DOWNLOADS + File.separator + IRApplication.getApplicationName() + File.separator; + public static final String binDir = packageDataDir + "bin" + File.separator; public static final String FILE_NAME_PREFIX = "irext_"; public static final String FILE_NAME_EXT = ".ir"; @@ -64,36 +65,15 @@ public class FileUtils { return false; } - public static File createBinaryFile(String fileName) { - if(createDirs(BASE_PATH) && createDirs(BIN_PATH)) { - String path = BIN_PATH + fileName; - File file = new File(path); - if (!file.exists()) { - try { - if (file.createNewFile()) { - return file; - } - } catch (IOException e) { - e.printStackTrace(); - } - } else { - Log.w(TAG, "binary file already exists ?"); - } - } else { - Log.e(TAG, "failed to create dirs"); - } - return null; - } - private static boolean createDirs(String path) { File file = new File(path); return file.exists() || file.mkdir(); } public static File getLocalFile(String fileName) { - File file = new File(BIN_PATH); + File file = new File(binDir); if (file.exists()) { - String path = BIN_PATH + fileName; + String path = binDir + fileName; file = new File(path); if (file.exists()) { return file; diff --git a/android-example/app/src/main/java/net/irext/ircontrol/utils/ToastUtils.java b/android-example/app/src/main/java/net/irext/ircontrol/utils/ToastUtils.java new file mode 100644 index 0000000..587c151 --- /dev/null +++ b/android-example/app/src/main/java/net/irext/ircontrol/utils/ToastUtils.java @@ -0,0 +1,24 @@ +package net.irext.ircontrol.utils; + +import android.content.Context; +import android.widget.Toast; + +/** + * Filename: ToastUtil.java + * Revised: Date: 2020-10-24 + * Revision: Revision: 1.0 + *

+ * Description: Utils of popup + *

+ * Revision log: + * 2020-10-24: created by strawmanbobi + */ +public class ToastUtils { + + public static void showToast(Context context, String text) { + int duration = Toast.LENGTH_SHORT; + + Toast toast = Toast.makeText(context, text, duration); + toast.show(); + } +} diff --git a/android-example/app/src/main/jniLibs/arm64-v8a/libirdecode.so b/android-example/app/src/main/jniLibs/arm64-v8a/libirdecode.so index 6574f17..234e4df 100644 Binary files a/android-example/app/src/main/jniLibs/arm64-v8a/libirdecode.so and b/android-example/app/src/main/jniLibs/arm64-v8a/libirdecode.so differ diff --git a/android-example/app/src/main/jniLibs/armeabi-v7a/libirdecode.so b/android-example/app/src/main/jniLibs/armeabi-v7a/libirdecode.so index 8cb2d88..b043552 100644 Binary files a/android-example/app/src/main/jniLibs/armeabi-v7a/libirdecode.so and b/android-example/app/src/main/jniLibs/armeabi-v7a/libirdecode.so differ diff --git a/android-example/app/src/main/jniLibs/x86/libirdecode.so b/android-example/app/src/main/jniLibs/x86/libirdecode.so index bfafd44..aff802f 100644 Binary files a/android-example/app/src/main/jniLibs/x86/libirdecode.so and b/android-example/app/src/main/jniLibs/x86/libirdecode.so differ diff --git a/android-example/app/src/main/jniLibs/x86_64/libirdecode.so b/android-example/app/src/main/jniLibs/x86_64/libirdecode.so index cdf2ddd..13ed693 100644 Binary files a/android-example/app/src/main/jniLibs/x86_64/libirdecode.so and b/android-example/app/src/main/jniLibs/x86_64/libirdecode.so differ diff --git a/android-example/app/src/main/res/mipmap-hdpi/ir_logo.png b/android-example/app/src/main/res/mipmap-hdpi/ir_logo.png deleted file mode 100644 index fc9e44f..0000000 Binary files a/android-example/app/src/main/res/mipmap-hdpi/ir_logo.png and /dev/null differ diff --git a/android-example/app/src/main/res/mipmap-mdpi/ir_logo.png b/android-example/app/src/main/res/mipmap-mdpi/ir_logo.png deleted file mode 100644 index cc35f45..0000000 Binary files a/android-example/app/src/main/res/mipmap-mdpi/ir_logo.png and /dev/null differ diff --git a/android-example/app/src/main/res/mipmap-xhdpi/ir_logo.png b/android-example/app/src/main/res/mipmap-xhdpi/ir_logo.png deleted file mode 100644 index 02d9e9b..0000000 Binary files a/android-example/app/src/main/res/mipmap-xhdpi/ir_logo.png and /dev/null differ diff --git a/android-example/app/src/main/res/mipmap-xxhdpi/ir_logo.png b/android-example/app/src/main/res/mipmap-xxhdpi/ir_logo.png index 001f53d..164c7a5 100644 Binary files a/android-example/app/src/main/res/mipmap-xxhdpi/ir_logo.png and b/android-example/app/src/main/res/mipmap-xxhdpi/ir_logo.png differ diff --git a/android-example/app/src/main/res/mipmap-xxxhdpi/ir_logo.png b/android-example/app/src/main/res/mipmap-xxxhdpi/ir_logo.png deleted file mode 100644 index 33247c8..0000000 Binary files a/android-example/app/src/main/res/mipmap-xxxhdpi/ir_logo.png and /dev/null differ diff --git a/android-example/app/src/main/res/values-zh-rCN/strings.xml b/android-example/app/src/main/res/values-zh-rCN/strings.xml index 8031d91..c530e02 100644 --- a/android-example/app/src/main/res/values-zh-rCN/strings.xml +++ b/android-example/app/src/main/res/values-zh-rCN/strings.xml @@ -11,6 +11,7 @@ 点击 + 安装遥控 + 请先授权应用对存储进行读写 电视机 diff --git a/android-example/app/src/main/res/values/strings.xml b/android-example/app/src/main/res/values/strings.xml index 09732d6..f484359 100644 --- a/android-example/app/src/main/res/values/strings.xml +++ b/android-example/app/src/main/res/values/strings.xml @@ -11,6 +11,7 @@ Tap + to create new remote control + Please grant storage read and write permission first TV diff --git a/android-example/build.gradle b/android-example/build.gradle index 96475e0..7991078 100644 --- a/android-example/build.gradle +++ b/android-example/build.gradle @@ -1,24 +1,29 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + repositories { - jcenter() + maven { + url "https://maven.aliyun.com/nexus/content/repositories/releases" + } google() + jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.2.0' - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath 'com.android.tools.build:gradle:8.1.0' } } allprojects { repositories { - jcenter() - google() - } -} + maven { + url "https://maven.aliyun.com/nexus/content/repositories/releases/" + } + maven { + url "https://maven.aliyun.com/nexus/content/repositories/snapshots" + } -task clean(type: Delete) { - delete rootProject.buildDir -} + google() + jcenter() + } +} \ No newline at end of file diff --git a/android-example/decodesdk/build.gradle b/android-example/decodesdk/build.gradle index 85c4077..f64e7fe 100644 --- a/android-example/decodesdk/build.gradle +++ b/android-example/decodesdk/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 28 + compileSdk 36 defaultConfig { - minSdkVersion 19 - targetSdkVersion 28 + minSdkVersion 26 + targetSdkVersion 36 } buildTypes { release { @@ -17,6 +17,6 @@ android { } dependencies { - api fileTree(include: ['*.jar'], dir: 'libs') - api 'com.android.support:appcompat-v7:28.0.0' + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:28.0.0' } diff --git a/android-example/decodesdk/src/main/AndroidManifest.xml b/android-example/decodesdk/src/main/AndroidManifest.xml index 69e31bf..9912c54 100644 --- a/android-example/decodesdk/src/main/AndroidManifest.xml +++ b/android-example/decodesdk/src/main/AndroidManifest.xml @@ -1,6 +1,4 @@ - + diff --git a/android-example/gradle.properties b/android-example/gradle.properties index aac7c9b..ead51f6 100644 --- a/android-example/gradle.properties +++ b/android-example/gradle.properties @@ -1,17 +1,22 @@ # Project-wide Gradle settings. - # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. - # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx1536m - +org.gradle.jvmargs=-Xmx4096M \ +--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \ +--add-opens=java.base/java.lang=ALL-UNNAMED \ +--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \ +--add-opens=java.base/java.io=ALL-UNNAMED \ +--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.useDeprecatedNdk=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/android-example/gradle/wrapper/gradle-wrapper.properties b/android-example/gradle/wrapper/gradle-wrapper.properties index 59bc51a..757b2fe 100644 --- a/android-example/gradle/wrapper/gradle-wrapper.properties +++ b/android-example/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Jan 04 08:41:31 CST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android-example/web-api/build.gradle b/android-example/web-api/build.gradle index 80d2ba6..ff970ab 100644 --- a/android-example/web-api/build.gradle +++ b/android-example/web-api/build.gradle @@ -3,10 +3,10 @@ apply plugin: 'com.android.library' android { signingConfigs { } - compileSdkVersion 33 + compileSdk 36 defaultConfig { - minSdkVersion 19 - targetSdkVersion 33 + minSdkVersion 26 + targetSdkVersion 36 } buildTypes { release { @@ -20,7 +20,7 @@ android { } dependencies { - api files('libs/gson-2.8.0.jar') - api files('libs/okhttp-3.7.0.jar') - api files('libs/okio-1.12.0.jar') + implementation 'com.squareup.okhttp3:okhttp:4.11.0' + implementation 'com.squareup.okio:okio:3.4.0' + implementation 'com.google.code.gson:gson:2.13.2' } diff --git a/android-example/web-api/src/main/java/net/irext/webapi/WebAPIs.java b/android-example/web-api/src/main/java/net/irext/webapi/WebAPIs.java index 0448426..0f8a1b5 100644 --- a/android-example/web-api/src/main/java/net/irext/webapi/WebAPIs.java +++ b/android-example/web-api/src/main/java/net/irext/webapi/WebAPIs.java @@ -43,7 +43,7 @@ public class WebAPIs { // download bin from OSS private static final String IR_BIN_FILE_PREFIX = "irda_"; private static final String IR_BIN_FILE_SUFFIX = ".bin"; - private static final String IR_BIN_DOWNLOAD_PREFIX = "http://irext-debug.oss-cn-hangzhou.aliyuncs.com/"; + private static final String IR_BIN_DOWNLOAD_PREFIX = "https://irext-release.oss-cn-hangzhou.aliyuncs.com/"; private static final String SERVICE_SIGN_IN = "/app/app_login"; private static final String SERVICE_LIST_CATEGORIES = "/indexing/list_categories"; @@ -81,6 +81,7 @@ public class WebAPIs { } private InputStream getFileByteStreamByURL(String url) throws IOException { + Log.d(TAG, "download remote binary file, url = " + url); Request request = new Request.Builder() .url(url) .get()