diff --git a/android-example/app/release/app-release.apk b/android-example/app/release/app-release.apk index fd8d479..2294a99 100644 Binary files a/android-example/app/release/app-release.apk and b/android-example/app/release/app-release.apk differ diff --git a/android-example/app/release/output.json b/android-example/app/release/output.json index d7050db..25fa7da 100644 --- a/android-example/app/release/output.json +++ b/android-example/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":4,"versionName":"0.2.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":4,"versionName":"0.2.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] \ No newline at end of file diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/IndexAdapter.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/IndexAdapter.java index 80d2a99..3613e82 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/IndexAdapter.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/IndexAdapter.java @@ -6,8 +6,9 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; + +import net.irext.decode.sdk.utils.Constants; import net.irext.ircontrol.R; -import net.irext.sdk.utils.Constants; import net.irext.webapi.model.RemoteIndex; import java.util.List; diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/RemoteControlAdapter.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/RemoteControlAdapter.java index 02e5b75..e240438 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/RemoteControlAdapter.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/adapter/RemoteControlAdapter.java @@ -6,10 +6,10 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; + +import net.irext.decode.sdk.utils.Constants; import net.irext.ircontrol.R; import net.irext.ircontrol.bean.RemoteControl; -import net.irext.sdk.utils.Constants; - import java.util.List; /** diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CategoryFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CategoryFragment.java index b2e1ce8..5c8c1cd 100644 --- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CategoryFragment.java +++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CategoryFragment.java @@ -9,13 +9,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; +import net.irext.decode.sdk.utils.Constants; import net.irext.ircontrol.IRApplication; import net.irext.ircontrol.R; import net.irext.ircontrol.ui.activity.CreateActivity; import net.irext.ircontrol.ui.adapter.CategoryAdapter; import net.irext.ircontrol.ui.widget.PullToRefreshListView; import net.irext.ircontrol.utils.MessageUtil; -import net.irext.sdk.utils.Constants; import net.irext.webapi.model.Category; import net.irext.webapi.WebAPICallbacks.ListCategoriesCallback; 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 8bdee86..733fffa 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 @@ -14,9 +14,9 @@ import android.view.View; import android.view.ViewGroup; import android.widget.*; -import net.irext.decode.sdk.bean.ACStatus; import net.irext.decode.sdk.IRDecode; -import net.irext.sdk.utils.Constants; +import net.irext.decode.sdk.bean.ACStatus; +import net.irext.decode.sdk.utils.Constants; import net.irext.ircontrol.R; import net.irext.ircontrol.bean.RemoteControl; import net.irext.ircontrol.ui.activity.ControlActivity; @@ -162,14 +162,14 @@ public class ControlFragment extends Fragment implements View.OnClickListener { /* decode SDK - decode according to key code */ if (Constants.CategoryID.AIR_CONDITIONER.getValue() == mCurrentRemoteControl.getCategoryId()) { - acStatus.setACPower(Constants.ACPower.POWER_OFF.getValue()); - acStatus.setACMode(Constants.ACMode.MODE_COOL.getValue()); - acStatus.setACTemp(Constants.ACTemperature.TEMP_24.getValue()); - acStatus.setACWindSpeed(Constants.ACWindSpeed.SPEED_AUTO.getValue()); - acStatus.setACWindDir(Constants.ACSwing.SWING_ON.getValue()); - acStatus.setACDisplay(0); - acStatus.setACTimer(0); - acStatus.setACSleep(0); + acStatus.setAcPower(Constants.ACPower.POWER_OFF.getValue()); + acStatus.setAcMode(Constants.ACMode.MODE_COOL.getValue()); + acStatus.setAcTemp(Constants.ACTemperature.TEMP_24.getValue()); + acStatus.setAcWindSpeed(Constants.ACWindSpeed.SPEED_AUTO.getValue()); + acStatus.setAcWindDir(Constants.ACSwing.SWING_ON.getValue()); + acStatus.setAcDisplay(0); + acStatus.setAcTimer(0); + acStatus.setAcSleep(0); switch(keyCode) { case KEY_POWER: 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 7b0fcf9..fbf19c6 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 029765f..7808375 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/armeabi/libirdecode.so b/android-example/app/src/main/jniLibs/armeabi/libirdecode.so deleted file mode 100644 index e28eb77..0000000 Binary files a/android-example/app/src/main/jniLibs/armeabi/libirdecode.so and /dev/null differ diff --git a/android-example/app/src/main/jniLibs/mips/libirdecode.so b/android-example/app/src/main/jniLibs/mips/libirdecode.so deleted file mode 100644 index 976606a..0000000 Binary files a/android-example/app/src/main/jniLibs/mips/libirdecode.so and /dev/null differ diff --git a/android-example/app/src/main/jniLibs/mips64/libirdecode.so b/android-example/app/src/main/jniLibs/mips64/libirdecode.so deleted file mode 100644 index 9f67bdf..0000000 Binary files a/android-example/app/src/main/jniLibs/mips64/libirdecode.so and /dev/null differ diff --git a/android-example/app/src/main/jniLibs/x86/libirdecode.so b/android-example/app/src/main/jniLibs/x86/libirdecode.so index a483851..3448f65 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 fe61780..3ed1c10 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/decodesdk/src/main/java/net/irext/decode/sdk/IRDecode.java b/android-example/decodesdk/src/main/java/net/irext/decode/sdk/IRDecode.java index 0785e6c..550a3e0 100644 --- a/android-example/decodesdk/src/main/java/net/irext/decode/sdk/IRDecode.java +++ b/android-example/decodesdk/src/main/java/net/irext/decode/sdk/IRDecode.java @@ -2,7 +2,7 @@ package net.irext.decode.sdk; import net.irext.decode.sdk.bean.ACStatus; import net.irext.decode.sdk.bean.TemperatureRange; -import net.irext.sdk.utils.Constants; +import net.irext.decode.sdk.utils.Constants; /** * Filename: IRDecode.java @@ -18,9 +18,7 @@ public class IRDecode { private static final String TAG = IRDecode.class.getSimpleName(); - static { - System.loadLibrary("irdecode"); - } + private static Object mSync = new Object(); private native int irOpen(int category, int subCate, String fileName); @@ -38,6 +36,8 @@ public class IRDecode { private native int irACGetSupportedSwing(int acMode); + private native int irACGetSupportedWindDirection(int acMode); + private static IRDecode mInstance; public static IRDecode getInstance() { @@ -48,7 +48,9 @@ public class IRDecode { } private IRDecode() { - + String libPath = "/data/irext/libirda_decoder.so"; + System.out.println("loading decode library " + libPath); + System.load(libPath); } public int openFile(int category, int subCate, String fileName) { @@ -60,10 +62,14 @@ public class IRDecode { } public int[] decodeBinary(int keyCode, ACStatus acStatus, int changeWindDir) { - if (null == acStatus) { - acStatus = new ACStatus(); + int[] decoded; + synchronized (mSync) { + if (null == acStatus) { + acStatus = new ACStatus(); + } + decoded = irDecode(keyCode, acStatus, changeWindDir); } - return irDecode(keyCode, acStatus, changeWindDir); + return decoded; } public void closeBinary() { @@ -76,7 +82,7 @@ public class IRDecode { public int[] getACSupportedMode() { // cool, heat, auto, fan, de-humidification - int []retSupportedMode = {0, 0, 0, 0, 0}; + int[] retSupportedMode = {0, 0, 0, 0, 0}; int supportedMode = irACGetSupportedMode(); for (int i = Constants.ACMode.MODE_COOL.getValue(); i <= Constants.ACMode.MODE_DEHUMIDITY.getValue(); i++) { @@ -87,7 +93,7 @@ public class IRDecode { public int[] getACSupportedWindSpeed(int acMode) { // auto, low, medium, high - int []retSupportedWindSpeed = {0, 0, 0, 0}; + int[] retSupportedWindSpeed = {0, 0, 0, 0}; int supportedWindSpeed = irACGetSupportedWindSpeed(acMode); for (int i = Constants.ACWindSpeed.SPEED_AUTO.getValue(); i <= Constants.ACWindSpeed.SPEED_HIGH.getValue(); @@ -99,7 +105,7 @@ public class IRDecode { public int[] getACSupportedSwing(int acMode) { // swing-on, swing-off - int []retSupportedSwing= {0, 0}; + int[] retSupportedSwing = {0, 0}; int supportedSwing = irACGetSupportedSwing(acMode); for (int i = Constants.ACSwing.SWING_ON.getValue(); i <= Constants.ACSwing.SWING_OFF.getValue(); @@ -108,4 +114,9 @@ public class IRDecode { } return retSupportedSwing; } + + public int getACSupportedWindDirection(int acMode) { + // how many directions supported by specific AC + return irACGetSupportedWindDirection(acMode); + } } diff --git a/android-example/decodesdk/src/main/java/net/irext/decode/sdk/bean/ACStatus.java b/android-example/decodesdk/src/main/java/net/irext/decode/sdk/bean/ACStatus.java index 3c690d6..9756e59 100644 --- a/android-example/decodesdk/src/main/java/net/irext/decode/sdk/bean/ACStatus.java +++ b/android-example/decodesdk/src/main/java/net/irext/decode/sdk/bean/ACStatus.java @@ -1,6 +1,6 @@ package net.irext.decode.sdk.bean; -import net.irext.sdk.utils.Constants; +import net.irext.decode.sdk.utils.Constants; /** * Filename: ACStatus.java @@ -48,67 +48,67 @@ public class ACStatus { this.acTimer = acTimer; } - public int getACPower() { + public int getAcPower() { return acPower; } - public void setACPower(int acPower) { + public void setAcPower(int acPower) { this.acPower = acPower; } - public int getACTemp() { + public int getAcTemp() { return acTemp; } - public void setACTemp(int acTemp) { + public void setAcTemp(int acTemp) { this.acTemp = acTemp; } - public int getACMode() { + public int getAcMode() { return acMode; } - public void setACMode(int acMode) { + public void setAcMode(int acMode) { this.acMode = acMode; } - public int getACWindDir() { + public int getAcWindDir() { return acWindDir; } - public void setACWindDir(int acWindDir) { + public void setAcWindDir(int acWindDir) { this.acWindDir = acWindDir; } - public int getACWindSpeed() { + public int getAcWindSpeed() { return acWindSpeed; } - public void setACWindSpeed(int acWindSpeed) { + public void setAcWindSpeed(int acWindSpeed) { this.acWindSpeed = acWindSpeed; } - public int getACDisplay() { + public int getAcDisplay() { return acDisplay; } - public void setACDisplay(int acDisplay) { + public void setAcDisplay(int acDisplay) { this.acDisplay = acDisplay; } - public int getACSleep() { + public int getAcSleep() { return acSleep; } - public void setACSleep(int acSleep) { + public void setAcSleep(int acSleep) { this.acSleep = acSleep; } - public int getACTimer() { + public int getAcTimer() { return acTimer; } - public void setACTimer(int acTimer) { + public void setAcTimer(int acTimer) { this.acTimer = acTimer; } diff --git a/android-example/decodesdk/src/main/java/net/irext/decode/sdk/utils/Constants.java b/android-example/decodesdk/src/main/java/net/irext/decode/sdk/utils/Constants.java index d4d4341..a0ec40b 100644 --- a/android-example/decodesdk/src/main/java/net/irext/decode/sdk/utils/Constants.java +++ b/android-example/decodesdk/src/main/java/net/irext/decode/sdk/utils/Constants.java @@ -1,4 +1,4 @@ -package net.irext.sdk.utils; +package net.irext.decode.sdk.utils; /** * Filename: Constants.java @@ -14,10 +14,24 @@ public class Constants { public static final int ERROR_CODE_SUCCESS = 0; public static final int ERROR_CODE_NETWORK_ERROR = -1; + public static final int ERROR_CODE_AUTH_FAILURE = 1; public static final int ERROR_CODE_INVALID_CATEGORY = 2; public static final int ERROR_CODE_INVALID_BRAND = 3; public static final int ERROR_CODE_INVALID_PARAMETER = 4; + public static final int ERROR_CODE_INVALID_CITY = 5; + public static final int ERROR_CODE_INVALID_OPERATOR = 6; + + public static final int ERROR_CODE_INVALID_SESSION = 20; + + public static final String ERROR_CODE_SUCESS_TEXT = "success"; + public static final String ERROR_CODE_NETWORK_ERROR_TEXT = "network error"; + public static final String ERROR_CODE_AUTH_FAILUTRE_TEXT = "auth failure"; + public static final String ERROR_CODE_INVALID_CATEGORY_TEXT = "invalid category"; + public static final String ERROR_CODE_INVALID_BRAND_TEXT = "invalid brand"; + public static final String ERROR_CODE_INVALID_PARAMETER_TEXT = "invalid parameter"; + + public static final String ERROR_CODE_INVALID_SESSION_TEXT = "invalid decode session"; public enum CategoryID { AIR_CONDITIONER(1),