diff --git a/android-example/app/build.gradle b/android-example/app/build.gradle
index 3e17ca9..623642e 100644
--- a/android-example/app/build.gradle
+++ b/android-example/app/build.gradle
@@ -8,6 +8,7 @@ android {
minSdkVersion 26
versionCode 7
versionName '1.5.0'
+
}
buildTypes {
release {
@@ -39,11 +40,11 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.aar'])
- implementation 'net.irext.webapi:irext-androidapi:1.5.1'
+ implementation 'net.irext.webapi:irext-androidapi:1.5.2'
- 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 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'androidx.core:core:1.13.1'
+ implementation 'com.google.android.material:material:1.13.0'
implementation 'com.android.support:multidex:1.0.3'
diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/ControlActivity.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/ControlActivity.java
index 70546b2..634c52d 100644
--- a/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/ControlActivity.java
+++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/ControlActivity.java
@@ -1,10 +1,10 @@
package net.irext.ircontrol.ui.activity;
import android.os.Bundle;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
import net.irext.ircontrol.R;
import net.irext.ircontrol.ui.fragment.ControlFragment;
diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/CreateActivity.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/CreateActivity.java
index 9ca4b71..ac55a52 100644
--- a/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/CreateActivity.java
+++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/activity/CreateActivity.java
@@ -3,11 +3,12 @@ package net.irext.ircontrol.ui.activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuItem;
+import androidx.activity.OnBackPressedCallback;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
import net.irext.ircontrol.R;
import net.irext.ircontrol.ui.fragment.*;
import net.irext.ircontrol.utils.MessageUtil;
@@ -53,6 +54,18 @@ public class CreateActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
+ OnBackPressedCallback callback = new OnBackPressedCallback(true) {
+ @Override
+ public void handleOnBackPressed() {
+ if (null == mFragment) {
+ finish();
+ return;
+ }
+ mFragment.onBackPressed();
+ }
+ };
+ getOnBackPressedDispatcher().addCallback(this, callback);
+
mMsgHandler = new MsgHandler(this);
mFragments = new ArrayList<>();
@@ -75,17 +88,6 @@ public class CreateActivity extends AppCompatActivity {
return super.onOptionsItemSelected(item);
}
- @Override
- public void onBackPressed() {
- if (null == mFragment) {
- this.finish();
- super.onBackPressed();
- return;
- }
- mFragment.onBackPressed();
- super.onBackPressed();
- }
-
private void switchPage(int next, Integer from) {
BaseCreateFragment fragment = mFragments.get(next);
Bundle bundle = new Bundle();
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 c12439b..566ae87 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
@@ -3,20 +3,19 @@ package net.irext.ircontrol.ui.activity;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-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 androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.FragmentManager;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
import net.irext.ircontrol.R;
import net.irext.ircontrol.bean.RemoteControl;
import net.irext.ircontrol.ui.fragment.MainFragment;
diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BaseCreateFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BaseCreateFragment.java
index 1d31ef9..b74de62 100644
--- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BaseCreateFragment.java
+++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BaseCreateFragment.java
@@ -1,13 +1,13 @@
package net.irext.ircontrol.ui.fragment;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
import net.irext.ircontrol.ui.activity.CreateActivity;
import net.irext.ircontrol.utils.MessageUtil;
diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BrandFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BrandFragment.java
index 4c3fad5..1e653ce 100644
--- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BrandFragment.java
+++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/BrandFragment.java
@@ -3,13 +3,13 @@ package net.irext.ircontrol.ui.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.support.annotation.NonNull;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
+import androidx.annotation.NonNull;
import net.irext.ircontrol.IRApplication;
import net.irext.ircontrol.R;
import net.irext.ircontrol.ui.activity.CreateActivity;
@@ -22,7 +22,6 @@ import net.irext.webapi.model.Brand;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
/**
* Filename: BrandFragment.java
@@ -97,7 +96,7 @@ public class BrandFragment extends BaseCreateFragment {
super.onCreateView(inflater, container, savedInstanceState);
getFrom();
View view = inflater.inflate(R.layout.fragment_brand, container, false);
- mApp = (IRApplication) Objects.requireNonNull(getActivity()).getApplication();
+ mApp = (IRApplication) requireActivity().getApplication();
mMsgHandler = new MsgHandler(this);
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 4d95ae3..350dc9c 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
@@ -3,13 +3,13 @@ package net.irext.ircontrol.ui.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.support.annotation.NonNull;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
+import androidx.annotation.NonNull;
import net.irext.decode.sdk.utils.Constants;
import net.irext.ircontrol.IRApplication;
import net.irext.ircontrol.R;
@@ -95,7 +95,7 @@ public class CategoryFragment extends BaseCreateFragment {
super.onCreateView(inflater, container, savedInstanceState);
mFrom = -1;
View view = inflater.inflate(R.layout.fragment_category, container, false);
- mApp = (IRApplication) Objects.requireNonNull(getActivity()).getApplication();
+ mApp = (IRApplication) requireActivity().getApplication();
mMsgHandler = new MsgHandler(this);
diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CityFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CityFragment.java
index 88ac93f..7b73aea 100644
--- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CityFragment.java
+++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/CityFragment.java
@@ -3,7 +3,6 @@ package net.irext.ircontrol.ui.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.support.annotation.NonNull;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -11,6 +10,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
+import androidx.annotation.NonNull;
import net.irext.ircontrol.IRApplication;
import net.irext.ircontrol.R;
import net.irext.ircontrol.ui.activity.CreateActivity;
@@ -209,7 +209,7 @@ public class CityFragment extends BaseCreateFragment {
super.onCreateView(inflater, container, savedInstanceState);
getFrom();
View view = inflater.inflate(R.layout.fragment_city, container, false);
- mApp = (IRApplication) Objects.requireNonNull(getActivity()).getApplication();
+ mApp = (IRApplication) requireActivity().getApplication();
mMsgHandler = new MsgHandler(this);
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 66222bd..3c05038 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
@@ -6,14 +6,13 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Vibrator;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
+import androidx.fragment.app.Fragment;
import net.irext.decode.sdk.IRDecode;
import net.irext.decode.sdk.bean.ACStatus;
import net.irext.decode.sdk.utils.Constants;
@@ -22,8 +21,15 @@ import net.irext.ircontrol.bean.RemoteControl;
import net.irext.ircontrol.ui.activity.ControlActivity;
import net.irext.ircontrol.utils.FileUtils;
import net.irext.ircontrol.utils.MessageUtil;
+import net.irext.ircontrol.utils.ToastUtils;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
import java.lang.ref.WeakReference;
+import java.net.Socket;
+import java.net.UnknownHostException;
/**
* Filename: ControlFragment.java
@@ -56,6 +62,11 @@ public class ControlFragment extends Fragment implements View.OnClickListener {
private static final int KEY_HOME = 9;
private static final int KEY_MENU = 10;
+ private static final int EMITTER_PORT = 8000;
+
+ private Socket emitterConn = null;
+ private int emitterConnected = 0;
+
private MsgHandler mHandler;
private ControlActivity mParent;
@@ -78,17 +89,17 @@ public class ControlFragment extends Fragment implements View.OnClickListener {
mParent = (ControlActivity)getActivity();
View view = inflater.inflate(R.layout.fragment_control, container, false);
- ImageButton mBtnPower = (ImageButton) view.findViewById(R.id.iv_power);
- ImageButton mBtnBack = (ImageButton) view.findViewById(R.id.iv_back);
- ImageButton mBtnHome = (ImageButton) view.findViewById(R.id.iv_home);
- ImageButton mBtnMenu = (ImageButton) view.findViewById(R.id.iv_menu);
- ImageButton mBtnUp = (ImageButton) view.findViewById(R.id.iv_up);
- ImageButton mBtnDown = (ImageButton) view.findViewById(R.id.iv_down);
- ImageButton mBtnLeft = (ImageButton) view.findViewById(R.id.iv_left);
- ImageButton mBtnRight = (ImageButton) view.findViewById(R.id.iv_right);
- ImageButton mBtnOK = (ImageButton) view.findViewById(R.id.iv_ok);
- ImageButton mBtnPlus = (ImageButton) view.findViewById(R.id.iv_plus);
- ImageButton mBtnMinus = (ImageButton) view.findViewById(R.id.iv_minus);
+ ImageButton mBtnPower = view.findViewById(R.id.iv_power);
+ ImageButton mBtnBack = view.findViewById(R.id.iv_back);
+ ImageButton mBtnHome = view.findViewById(R.id.iv_home);
+ ImageButton mBtnMenu = view.findViewById(R.id.iv_menu);
+ ImageButton mBtnUp = view.findViewById(R.id.iv_up);
+ ImageButton mBtnDown = view.findViewById(R.id.iv_down);
+ ImageButton mBtnLeft = view.findViewById(R.id.iv_left);
+ ImageButton mBtnRight = view.findViewById(R.id.iv_right);
+ ImageButton mBtnOK = view.findViewById(R.id.iv_ok);
+ ImageButton mBtnPlus = view.findViewById(R.id.iv_plus);
+ ImageButton mBtnMinus = view.findViewById(R.id.iv_minus);
mBtnPower.setOnClickListener(this);
mBtnBack.setOnClickListener(this);
@@ -102,6 +113,23 @@ public class ControlFragment extends Fragment implements View.OnClickListener {
mBtnPlus.setOnClickListener(this);
mBtnMinus.setOnClickListener(this);
+ CheckBox mCbUseEmitter = view.findViewById(R.id.cb_use_emitter);
+ EditText mEtEmitterIp = view.findViewById(R.id.emitter_ip);
+ ImageButton mBtnConnect = view.findViewById(R.id.btn_connection_status);
+
+ mBtnConnect.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ String emitterIp = mEtEmitterIp.getText().toString();
+ if (android.net.InetAddresses.isNumericAddress(emitterIp)) {
+ connectToEmitter(emitterIp, String.valueOf(EMITTER_PORT));
+ } else {
+ ToastUtils.showToast(mParent, mParent.getString(R.string.input_emitter_ip_address), null);
+ }
+ }
+ });
+
return view;
}
@@ -145,7 +173,6 @@ public class ControlFragment extends Fragment implements View.OnClickListener {
mIRDecode.closeBinary();
}
- @Nullable
private int[] irControl(int keyCode) {
int inputKeyCode;
ACStatus acStatus = new ACStatus();
@@ -205,6 +232,69 @@ public class ControlFragment extends Fragment implements View.OnClickListener {
return mIRDecode.decodeBinary(inputKeyCode, acStatus, 0);
}
+ private void onEmitterDisconnected() {
+ if (1 == emitterConnected) {
+ Log.d(TAG, "emitter disconnected");
+ } else {
+ Log.d(TAG, "emitter disconnected");
+ }
+
+ mParent.runOnUiThread(() -> {
+ if (1 == emitterConnected) {
+ ToastUtils.showToast(mParent, mParent.getString(R.string.connect_failed), Toast.LENGTH_SHORT);
+ } else {
+ ToastUtils.showToast(mParent, mParent.getString(R.string.connect_disconnected), Toast.LENGTH_SHORT);
+ }
+ });
+
+ emitterConnected = 0;
+ }
+
+ private void onEmitterResponse(String line) {
+ Log.d(TAG, "emitter: " + line);
+ }
+
+ private void sendDecodedToEmitter(String value) {
+ new Thread(() -> {
+ try {
+ PrintWriter out = new PrintWriter(emitterConn.getOutputStream(), true);
+ out.println(value);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }).start();
+ }
+
+ private void connectToEmitter(String ipAddress, String port) {
+ if (0 == emitterConnected) {
+ if (null == ipAddress || null == port) {
+ return;
+ }
+ new Thread(() -> {
+ try {
+ emitterConn = new Socket(ipAddress, Integer.parseInt(port));
+ emitterConn.setKeepAlive(true);
+ emitterConnected = 1;
+ BufferedReader in = new BufferedReader(new InputStreamReader(emitterConn.getInputStream()));
+ String line;
+ while ((line = in.readLine()) != null) {
+ onEmitterResponse(line);
+ }
+ onEmitterDisconnected();
+ } catch (IOException ioException) {
+ onEmitterDisconnected();
+ }
+ }).start();
+ } else {
+ try {
+ emitterConnected = 0;
+ emitterConn.close();
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
// control
@Override
public void onClick(View v) {
@@ -242,13 +332,16 @@ public class ControlFragment extends Fragment implements View.OnClickListener {
decodedValue += ",";
}
Log.d(TAG, "decodedValue : " + decodedValue);
+ sendDecodedToEmitter(decodedValue);
// send decoded integer array to IR emitter
ConsumerIrManager irEmitter =
(ConsumerIrManager) mParent.getSystemService(Context.CONSUMER_IR_SERVICE);
- if (irEmitter.hasIrEmitter()) {
- if (null != decoded && decoded.length > 0) {
+ if (null != irEmitter && irEmitter.hasIrEmitter()) {
+ if (decoded.length > 0) {
irEmitter.transmit(38000, decoded);
}
+ } else {
+ ToastUtils.showToast(mParent, this.getString(R.string.ir_not_supported), null);
}
}
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 a035cdd..49022e0 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
@@ -3,7 +3,6 @@ package net.irext.ircontrol.ui.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.support.annotation.NonNull;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -11,6 +10,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
+import androidx.annotation.NonNull;
import net.irext.ircontrol.IRApplication;
import net.irext.ircontrol.bean.RemoteControl;
import net.irext.ircontrol.ui.widget.PullToRefreshListView;
@@ -212,7 +212,7 @@ public class IndexFragment extends BaseCreateFragment {
View view = inflater.inflate(R.layout.fragment_index, container, false);
mMsgHandler = new MsgHandler(this);
- mApp = (IRApplication) Objects.requireNonNull(this.getActivity()).getApplication();
+ mApp = (IRApplication) this.requireActivity().getApplication();
Category category = mParent.getCurrentCategory();
Brand brand = mParent.getCurrentBrand();
@@ -240,7 +240,6 @@ public class IndexFragment extends BaseCreateFragment {
listIndexes();
}
});
-
mIndexList.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
diff --git a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/MainFragment.java b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/MainFragment.java
index e9470c1..2bbb129 100644
--- a/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/MainFragment.java
+++ b/android-example/app/src/main/java/net/irext/ircontrol/ui/fragment/MainFragment.java
@@ -2,7 +2,6 @@ package net.irext.ircontrol.ui.fragment;
import android.os.Handler;
import android.os.Message;
-import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -11,6 +10,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
import net.irext.ircontrol.R;
import net.irext.ircontrol.bean.RemoteControl;
import net.irext.ircontrol.ui.activity.MainActivity;
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
index 587c151..d238acf 100644
--- 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
@@ -15,8 +15,12 @@ import android.widget.Toast;
*/
public class ToastUtils {
- public static void showToast(Context context, String text) {
- int duration = Toast.LENGTH_SHORT;
+ public static void showToast(Context context, String text, Integer specificDuration) {
+ int duration = Toast.LENGTH_LONG;
+
+ if (null != specificDuration) {
+ duration = specificDuration;
+ }
Toast toast = Toast.makeText(context, text, duration);
toast.show();
diff --git a/android-example/app/src/main/res/layout/activity_control.xml b/android-example/app/src/main/res/layout/activity_control.xml
index 5dbd9d4..19e1ea1 100644
--- a/android-example/app/src/main/res/layout/activity_control.xml
+++ b/android-example/app/src/main/res/layout/activity_control.xml
@@ -11,6 +11,7 @@
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ android:fitsSystemWindows="true"
tools:context="net.irext.ircontrol.ui.activity.ControlActivity">
diff --git a/android-example/app/src/main/res/layout/activity_create.xml b/android-example/app/src/main/res/layout/activity_create.xml
index 9c43703..5411a06 100644
--- a/android-example/app/src/main/res/layout/activity_create.xml
+++ b/android-example/app/src/main/res/layout/activity_create.xml
@@ -10,6 +10,7 @@
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
+ android:fitsSystemWindows="true"
tools:context="net.irext.ircontrol.ui.activity.CreateActivity">
-
-
+
-
-
+
diff --git a/android-example/app/src/main/res/layout/fragment_control.xml b/android-example/app/src/main/res/layout/fragment_control.xml
index 4a279bd..9af7034 100644
--- a/android-example/app/src/main/res/layout/fragment_control.xml
+++ b/android-example/app/src/main/res/layout/fragment_control.xml
@@ -1,8 +1,11 @@
-
+
+
-
+
+
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-example/app/src/main/res/mipmap-xxhdpi/connect_emitter.png b/android-example/app/src/main/res/mipmap-xxhdpi/connect_emitter.png
new file mode 100644
index 0000000..dc41d06
Binary files /dev/null and b/android-example/app/src/main/res/mipmap-xxhdpi/connect_emitter.png 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 c530e02..f48abb8 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
@@ -6,7 +6,7 @@
下拉刷新
放开以刷新\r\n(本例程只读取前20个数据)
- 刷新...
+ 刷新…
已刷新: %1$s
@@ -30,5 +30,13 @@
确定
+
-
+ 该设备不支持红外发射, 请连接外部模块进行发射
+ 发射端 IP
+ 192.168.1.100
+ 连接
+ 使用发射器
+ 请输入接收器的 IP 地址
+ 连接失败
+ 断开连接
diff --git a/android-example/app/src/main/res/values/strings.xml b/android-example/app/src/main/res/values/strings.xml
index f484359..af712f4 100644
--- a/android-example/app/src/main/res/values/strings.xml
+++ b/android-example/app/src/main/res/values/strings.xml
@@ -6,7 +6,7 @@
Pull to refresh
Release to refresh
- Refreshing...
+ Refreshing…
Updated: %1$s
@@ -30,5 +30,14 @@
OK
+
-
+ IR emitter is not supported in this device, please try with external emitters
+
+ Emitter IP
+ 192.168.1.100
+ connect
+ Use Emitter
+ Please input IP address of emitter
+ Connect failed
+ Disconnected
diff --git a/android-example/build.gradle b/android-example/build.gradle
index 7991078..08a9302 100644
--- a/android-example/build.gradle
+++ b/android-example/build.gradle
@@ -10,7 +10,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.1.0'
+ classpath 'com.android.tools.build:gradle:8.12.0'
}
}
diff --git a/android-example/gradle.properties b/android-example/gradle.properties
index 209cb8d..25245b2 100644
--- a/android-example/gradle.properties
+++ b/android-example/gradle.properties
@@ -16,9 +16,9 @@ org.gradle.jvmargs=-Xmx4096M \
# 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
-android.useAndroidX=true
\ No newline at end of file
+android.useAndroidX=true
+android.enableJetifier=true
\ No newline at end of file