diff --git a/Android/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java b/Android/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java index 43a18f5..49b870a 100644 --- a/Android/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java +++ b/Android/app/src/main/java/net/irext/ircontrol/ui/fragment/ControlFragment.java @@ -23,6 +23,9 @@ import net.irext.ircontrol.ui.activity.ControlActivity; import net.irext.ircontrol.utils.FileUtils; import net.irext.ircontrol.utils.MessageUtil; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; import java.lang.ref.WeakReference; /** @@ -134,7 +137,21 @@ public class ControlFragment extends Fragment implements View.OnClickListener { mCurrentRemoteControl.getRemoteMap() + FileUtils.FILE_NAME_EXT; /* decode SDK - load binary file */ - int ret = mIRDecode.openBinary(category, mCurrentRemoteControl.getSubCategory(), binFileName); + // int ret = mIRDecode.openBinary(category, mCurrentRemoteControl.getSubCategory(), binFileName); + File binFile = new File(binFileName); + byte []binaries = new byte[(int)binFile.length()]; + try { + if (null != binFile) { + FileInputStream fin = new FileInputStream(binFile); + fin.read(binaries); + } + } catch (Exception e) { + e.printStackTrace(); + } + int ret = mIRDecode.openBinary(category, mCurrentRemoteControl.getSubCategory(), + binaries, binaries.length); + + Log.d(TAG, "binary opened : " + ret); } } diff --git a/Android/app/src/main/jniLibs/arm64-v8a/libirdecode.so b/Android/app/src/main/jniLibs/arm64-v8a/libirdecode.so index bb3650b..f68c5a9 100644 Binary files a/Android/app/src/main/jniLibs/arm64-v8a/libirdecode.so and b/Android/app/src/main/jniLibs/arm64-v8a/libirdecode.so differ diff --git a/Android/app/src/main/jniLibs/armeabi-v7a/libirdecode.so b/Android/app/src/main/jniLibs/armeabi-v7a/libirdecode.so index bc2c68a..8f9ea63 100644 Binary files a/Android/app/src/main/jniLibs/armeabi-v7a/libirdecode.so and b/Android/app/src/main/jniLibs/armeabi-v7a/libirdecode.so differ diff --git a/Android/app/src/main/jniLibs/armeabi/libirdecode.so b/Android/app/src/main/jniLibs/armeabi/libirdecode.so index d65fe4b..f809249 100644 Binary files a/Android/app/src/main/jniLibs/armeabi/libirdecode.so and b/Android/app/src/main/jniLibs/armeabi/libirdecode.so differ diff --git a/Android/app/src/main/jniLibs/mips/libirdecode.so b/Android/app/src/main/jniLibs/mips/libirdecode.so index cb9661f..5215327 100644 Binary files a/Android/app/src/main/jniLibs/mips/libirdecode.so and b/Android/app/src/main/jniLibs/mips/libirdecode.so differ diff --git a/Android/app/src/main/jniLibs/mips64/libirdecode.so b/Android/app/src/main/jniLibs/mips64/libirdecode.so index 6518ce7..c8c1f4e 100644 Binary files a/Android/app/src/main/jniLibs/mips64/libirdecode.so and b/Android/app/src/main/jniLibs/mips64/libirdecode.so differ diff --git a/Android/app/src/main/jniLibs/x86/libirdecode.so b/Android/app/src/main/jniLibs/x86/libirdecode.so index 67d18e5..af4a07e 100644 Binary files a/Android/app/src/main/jniLibs/x86/libirdecode.so and b/Android/app/src/main/jniLibs/x86/libirdecode.so differ diff --git a/Android/app/src/main/jniLibs/x86_64/libirdecode.so b/Android/app/src/main/jniLibs/x86_64/libirdecode.so index 0082f52..93b3991 100644 Binary files a/Android/app/src/main/jniLibs/x86_64/libirdecode.so and b/Android/app/src/main/jniLibs/x86_64/libirdecode.so differ diff --git a/Android/decodesdk/irextdecode/jni/ir_decode_jni.c b/Android/decodesdk/irextdecode/jni/ir_decode_jni.c index da1a9da..1c84e4e 100644 --- a/Android/decodesdk/irextdecode/jni/ir_decode_jni.c +++ b/Android/decodesdk/irextdecode/jni/ir_decode_jni.c @@ -35,6 +35,25 @@ JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpen return IR_DECODE_SUCCEEDED; } +JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpenBinary + (JNIEnv *env, jobject this_obj, jint category_id, jint sub_cate, + jbyteArray binaries, jint bin_length) +{ + jbyte* j_buffer = (*env)->GetByteArrayElements(env, binaries, 0); + unsigned char* buffer = (unsigned char*)j_buffer; + + if (IR_DECODE_FAILED == ir_binary_open(category_id, sub_cate, buffer, bin_length)) + { + ir_close(); + (*env)->ReleaseByteArrayElements(env, binaries, j_buffer, JNI_ABORT); + return IR_DECODE_FAILED; + } + + (*env)->ReleaseByteArrayElements(env, binaries, j_buffer, JNI_ABORT); + + return IR_DECODE_SUCCEEDED; +} + JNIEXPORT jintArray JNICALL Java_net_irext_decodesdk_IRDecode_irDecode (JNIEnv *env, jobject this_obj, jint key_code, jobject jni_ac_status, jint change_wind_direction) { @@ -102,8 +121,12 @@ JNIEXPORT jobject JNICALL Java_net_irext_decodesdk_IRDecode_irACGetTemperatureRa int tempMax = 0; jobject temperature_range = NULL; - jclass temperature_range_class = (*env)->FindClass(env, "com/irext/remote/bean/jnibean/JNITemperatureRange"); - jmethodID temperature_range_mid = (*env)->GetMethodID(env, temperature_range_class, "", "()V"); + jclass temperature_range_class = + (*env)->FindClass(env, "com/irext/remote/bean/jnibean/JNITemperatureRange"); + + jmethodID temperature_range_mid = + (*env)->GetMethodID(env, temperature_range_class, "", "()V"); + jfieldID min_temp_fid = (*env)->GetFieldID(env, temperature_range_class, "tempMin", "I"); jfieldID max_temp_fid = (*env)->GetFieldID(env, temperature_range_class, "tempMax", "I"); diff --git a/Android/decodesdk/irextdecode/jni/ir_decode_jni.h b/Android/decodesdk/irextdecode/jni/ir_decode_jni.h index 52e0286..c44a0aa 100644 --- a/Android/decodesdk/irextdecode/jni/ir_decode_jni.h +++ b/Android/decodesdk/irextdecode/jni/ir_decode_jni.h @@ -63,6 +63,14 @@ extern "C" { JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpen (JNIEnv *, jobject, jint, jint, jstring); +/* + * Class: net_irext_decodesdk_IRDecode + * Method: irOpenBinary + * Signature: II(Ljava/lang/String;) + */ +JNIEXPORT jint JNICALL Java_net_irext_decodesdk_IRDecode_irOpenBinary + (JNIEnv *, jobject, jint, jint, jbyteArray, jint); + /* * Class: net_irext_decodesdk_IRDecode * Method: irDecode diff --git a/Android/decodesdk/src/main/java/net/irext/decodesdk/IRDecode.java b/Android/decodesdk/src/main/java/net/irext/decodesdk/IRDecode.java index 8cfb017..501e794 100644 --- a/Android/decodesdk/src/main/java/net/irext/decodesdk/IRDecode.java +++ b/Android/decodesdk/src/main/java/net/irext/decodesdk/IRDecode.java @@ -24,6 +24,8 @@ public class IRDecode { private native int irOpen(int category, int subCate, String fileName); + private native int irOpenBinary(int category, int subCate, byte[] binaries, int binLength); + private native int[] irDecode(int keyCode, ACStatus acStatus, int changeWindDirection); private native void irClose(); @@ -45,10 +47,14 @@ public class IRDecode { return mInstance; } - public int openBinary(int category, int subCate, String fileName) { + public int openFile(int category, int subCate, String fileName) { return irOpen(category, subCate, fileName); } + public int openBinary(int category, int subCate, byte[] binaries, int binLength) { + return irOpenBinary(category, subCate, binaries, binLength); + } + public int[] decodeBinary(int keyCode, ACStatus acStatus, int changeWindDir) { return irDecode(keyCode, acStatus, changeWindDir); }