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