diff --git a/app/src/main/java/com/xypower/mpremote/Constants.java b/app/src/main/java/com/xypower/mpremote/Constants.java index 2017de3..3a34705 100644 --- a/app/src/main/java/com/xypower/mpremote/Constants.java +++ b/app/src/main/java/com/xypower/mpremote/Constants.java @@ -3,6 +3,7 @@ package com.xypower.mpremote; public class Constants { public static final String PACKAGE_NAME_MP = "com.xypower.mpapp"; + public static final String PACKAGE_NAME_MPMASTER = "com.xypower.mpmaster"; public static final String REMOTE_PATH_ROOT = "/sdcard/" + PACKAGE_NAME_MP + "/"; public static final String REMOTE_PATH_DATA = REMOTE_PATH_ROOT + "data/"; public static final String REMOTE_PATH_DATA_CHANNELS = REMOTE_PATH_ROOT + "data/channels/"; @@ -22,6 +23,7 @@ public class Constants { public static final String KEY_GSM_VENDOR_NAME = "gsm.operator.alpha"; public static final String KEY_APP_MP_VERSION = "mpapp.version"; + public static final String KEY_APP_MPMASTER_VERSION = "mpmaster.version"; public static final String KEY_PREFIX_GLOBAL_SETTING = "settings.global."; diff --git a/app/src/main/java/com/xypower/mpremote/DeviceActivity.java b/app/src/main/java/com/xypower/mpremote/DeviceActivity.java index e037675..cdf08b9 100644 --- a/app/src/main/java/com/xypower/mpremote/DeviceActivity.java +++ b/app/src/main/java/com/xypower/mpremote/DeviceActivity.java @@ -1,16 +1,19 @@ package com.xypower.mpremote; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; import android.annotation.SuppressLint; import android.app.AlertDialog; -import android.app.ProgressDialog; import android.content.Intent; import android.content.res.Resources; import android.database.Cursor; import android.net.ConnectivityManager; import android.os.Bundle; import android.os.Handler; +import android.os.Looper; +import android.os.Message; import android.text.Html; import android.text.TextUtils; import android.util.Base64; @@ -21,7 +24,10 @@ import android.widget.Toast; import com.xypower.common.FilesUtils; import com.xypower.common.JSONUtils; import com.xypower.common.MicroPhotoContext; +import com.xypower.mpremote.adapter.ItemAdapter; +import com.xypower.mpremote.bean.ChannelBean; import com.xypower.mpremote.databinding.ActivityDeviceBinding; +import com.xypower.mpremote.interfaces.OnItemClickListener; import com.xypower.mpremote.utils.AdbUtils; import com.xypower.mpremote.utils.AlertDialogUtils; import com.xypower.mpremote.utils.FileUtils; @@ -41,14 +47,14 @@ import java.util.Map; import dadb.AdbShellResponse; import dadb.Dadb; -public class DeviceActivity extends AppCompatActivity implements View.OnClickListener { +public class DeviceActivity extends AppCompatActivity implements View.OnClickListener, OnItemClickListener { private static final String TAG = "ADB"; public static final int RSSI_LEVELS = 5; private ActivityDeviceBinding binding; - private Handler mHandler = new Handler(); + private Handler mHandler; private String mCmdId; - private Map mProps = new HashMap<>(); + private Map mProps = new HashMap<>();//存储从设备端获取的设备信息 private Map mChannelCfgs = new HashMap(); private String mSerialNo = ""; private MicroPhotoContext.AppConfig mAppConfig = new MicroPhotoContext.AppConfig(); @@ -59,6 +65,11 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis private String configPath;//存放App配置文件 private String tmp;//存放配置文件的目录 private AlertDialog alertDialog; + private ItemAdapter photoitemAdapter; + private ArrayList channelList = new ArrayList<>();//用于存放通道信息 + private ItemAdapter videoitemAdapter; + private static final int photoAdapter = 1; + private static final int videoAdapter = 2; @Override protected void onCreate(Bundle savedInstanceState) { @@ -67,15 +78,49 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis setContentView(binding.getRoot()); initData(); initView(); + initHandler(); initEvent(); } + private void initHandler() { + mHandler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(@NonNull Message msg) { + switch (msg.what) { + case 1: + AlertDialogUtils.dismiss(alertDialog); + showAppInfo(); + break; + case 2: + Toast.makeText(DeviceActivity.this, R.string.err_dev_failed_to_connect, Toast.LENGTH_LONG).show(); + break; + case 3: + updateRecycleView(channelList); + break; + } + } + }; + } + private void initEvent() { //加载设备信息 - loadDeviceInfo( true); + loadDeviceInfo(true); } private void initView() { + photoitemAdapter = new ItemAdapter(); + photoitemAdapter.setAdapterType(photoAdapter); + photoitemAdapter.setOnClickListener(this); + binding.recyclerViewPhoto.setAdapter(photoitemAdapter); + binding.recyclerViewPhoto.setLayoutManager(new GridLayoutManager(this, 3)); + + videoitemAdapter = new ItemAdapter(); + videoitemAdapter.setAdapterType(videoAdapter); + videoitemAdapter.setOnClickListener(this); + binding.recyclerViewVideo.setAdapter(videoitemAdapter); + binding.recyclerViewVideo.setLayoutManager(new GridLayoutManager(this, 3)); + + binding.ytControl.setOnClickListener(this); binding.takePhoto1.setOnClickListener(this); binding.takePhoto2.setOnClickListener(this); binding.takePhoto3.setOnClickListener(this); @@ -94,6 +139,8 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis //获取配置文件在本机的存储路径 tmp = FileUtils.join(getFilesDir(), "tmp"); configPath = FileUtils.join(tmp, "App.json"); + + } @Override @@ -114,25 +161,15 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis } catch (Exception ex) { ex.printStackTrace(); } - mHandler.post(new Runnable() { - @Override - public void run() { - alertDialog.dismiss(); - showAppInfo(); - } - }); + mHandler.sendMessage(mHandler.obtainMessage(1)); } }).start(); } + private void runImpl() { Dadb adb = AdbManager.getAdb(mDeviceIp, AdbUtils.DEFAULT_ADB_PORT); if (adb == null) { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - Toast.makeText(DeviceActivity.this, R.string.err_dev_failed_to_connect, Toast.LENGTH_LONG).show(); - } - }, 100); + mHandler.sendMessage(mHandler.obtainMessage(2)); return; } boolean res = false; @@ -145,23 +182,13 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis if (appConfig != null) { mAppConfig = appConfig; } - DeviceActivity.this.mHandler.post(new Runnable() { - @Override - public void run() { - DeviceActivity.this.showAppInfo(); - } - }); } - final int numberOfChannels = (mAppConfig != null) ? mAppConfig.channels : 0; - mHandler.post(new Runnable() { - @Override - public void run() { - updateButtons(numberOfChannels); - } - }); mChannelCfgs.clear(); if (mAppConfig != null && mAppConfig.channels > 0) { for (int channel = 1; channel <= mAppConfig.channels; channel++) { + ChannelBean channelBean = new ChannelBean(); + channelBean.setChannel(channel); + channelBean.setChannelname("通道" + channel); String remoteFilePath = Constants.REMOTE_PATH_DATA_CHANNELS + Integer.toString(channel) + ".json"; String join = FileUtils.join(tmp, Integer.toString(channel) + ".json"); File channelfile = FileUtils.getFile(join); @@ -170,11 +197,15 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis JSONObject channelJson = JSONUtils.loadJson(channelfile.getAbsolutePath()); if (channelJson != null) { mChannelCfgs.put(new Integer(channel), channelJson); + channelBean.setJsonObject(channelJson); } channelfile.delete(); } + channelList.add(channelBean); } + mHandler.sendMessage(mHandler.obtainMessage(3)); } + AdbShellResponse adbShellResponse = null; try { adbShellResponse = adb.shell("settings list global"); @@ -210,7 +241,7 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis } } if (mProps.containsKey(Constants.KEY_RO_SERIALNO)) { - mSerialNo = (String)mProps.get(Constants.KEY_RO_SERIALNO); + mSerialNo = (String) mProps.get(Constants.KEY_RO_SERIALNO); } // adb shell pm dump com.xypower.mpremote | grep "versionName" adbShellResponse = null; @@ -230,6 +261,23 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis } } } + adbShellResponse = null; + try { + adbShellResponse = adb.shell("pm dump " + Constants.PACKAGE_NAME_MPMASTER + " | grep \"versionName\""); + } catch (Exception ex) { + ex.printStackTrace(); + } + if (adbShellResponse.getExitCode() == 0) { + String[] lines = FilesUtils.splitLines(adbShellResponse.getAllOutput()); + for (String line : lines) { + int pos = line.indexOf("versionName="); + if (pos != -1) { + String val = line.substring(pos + 12); + mProps.put(Constants.KEY_APP_MPMASTER_VERSION, val); + break; + } + } + } String cmd = "content query --uri content://com.xypower.mpapp.provider/queryBatVol"; adbShellResponse = null; try { @@ -252,6 +300,12 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis } } } + + private void updateRecycleView(ArrayList mChannelCfgs) { + photoitemAdapter.setItemList(mChannelCfgs); + videoitemAdapter.setItemList(mChannelCfgs); + } + protected boolean pullFile(Dadb adb, String remoteFilePath, File localFilePath) { if (localFilePath.exists()) { localFilePath.delete(); @@ -266,58 +320,41 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis return res && localFilePath.exists(); } - protected void takePhotoImpl(final String cmd, final int channel, final int preset, final String localFileName, final String remoteFilePath, final boolean photoOrVideo, long sleepTime) { + protected void takePhotoImpl(final String cmd, final String localFileName, final String remoteFilePath, final boolean photoOrVideo, long sleepTime) { Thread th = new Thread(new Runnable() { @Override public void run() { - Dadb adb = null; - try { Log.i(TAG, "Start connecting " + mDeviceIp); adb = AdbManager.getAdb(mDeviceIp, AdbUtils.DEFAULT_ADB_PORT); - Log.i(TAG, "Finish connecting " + mDeviceIp); if (adb == null) { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - Toast.makeText(DeviceActivity.this, R.string.err_dev_failed_to_connect, Toast.LENGTH_LONG).show(); - } - }, 100); + mHandler.sendMessage(mHandler.obtainMessage(2)); return; } - AdbShellResponse adbShellResponse = null; try { adbShellResponse = adb.shell(cmd); } catch (Exception ex) { ex.printStackTrace(); } - if (adbShellResponse != null) { if (adbShellResponse.getExitCode() == 0) { - if (sleepTime > 0) { try { Thread.sleep(sleepTime); } catch (Exception ex) { } } - File localDevicePath = new File(getFilesDir(), "Photos" + File.separator + mSerialNo); if (!localDevicePath.exists()) { localDevicePath.mkdirs(); } - final File localFilePath = new File(localDevicePath, localFileName); - for (int idx = 0; idx < 10; idx++) { - boolean res = pullFile(adb, remoteFilePath, localFilePath); - if (res) { - mHandler.post(new Runnable() { @Override public void run() { @@ -330,29 +367,24 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis }); break; } - try { Thread.sleep(1000); } catch (Exception ex) { ex.printStackTrace(); } } - try { // mAdb.shell("rm " + remoteFilePath); } catch (Exception ex) { ex.printStackTrace(); } - } } } catch (Exception ex) { ex.printStackTrace(); } - } }); - th.start(); } @@ -390,7 +422,7 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis + Integer.toString(channel) + " --bind preset:i:" + Integer.toString(preset) + " --bind leftTopOsd:s:" + Base64.encodeToString(leftTopOsdBytes, Base64.DEFAULT | Base64.NO_WRAP) + ""; // adbShellResponse = null; - takePhotoImpl(cmd, channel, preset, fileName, remoteFilePath, photoOrVideo, 0); + takePhotoImpl(cmd, fileName, remoteFilePath, photoOrVideo, 0); return 0; } @@ -557,42 +589,44 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis private void showAppInfo() { // 视频浏览,拍照,设备信息及状态查询(编号,版本,双SIM卡状态,电池及太阳能电压等),可以参考东视 - Resources resources = getResources(); - // String buildTime = BuildConfig.BUILD_ - // Date date = new Date(BuildConfig.BUILD_TIMESTAMP); - // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - String title = resources.getString(R.string.app_name); - if (mAppConfig != null && !TextUtils.isEmpty(mAppConfig.cmdid)) { - title = mAppConfig.cmdid; - } - StringBuilder stringBuilder = new StringBuilder(); - - ConnectivityManager mConnectivityManager; - if (mProps.containsKey(Constants.KEY_RO_SERIALNO)) { - String val = (String)mProps.get(Constants.KEY_RO_SERIALNO); + String val = (String) mProps.get(Constants.KEY_RO_SERIALNO); appendKeyValue(stringBuilder, "序列号", val, true); } - if (mProps.containsKey(Constants.KEY_RO_CUSTOM_OTA_VERSION)) { - String val = (String)mProps.get(Constants.KEY_RO_CUSTOM_OTA_VERSION); + String val = (String) mProps.get(Constants.KEY_RO_CUSTOM_OTA_VERSION); appendKeyValue(stringBuilder, "系统版本", val, true); } + appendKeyValue(stringBuilder, "CMDID", mAppConfig.cmdid, true); + appendKeyValue(stringBuilder, "主站", (TextUtils.isEmpty(mAppConfig.server) ? "" : mAppConfig.server) + ":" + Integer.toString(mAppConfig.port)); + appendKeyValue(stringBuilder, "通道数", Integer.toString(mAppConfig.channels)); + if (mProps.containsKey(Constants.KEY_APP_MP_VERSION)) { + String val = (String) mProps.get(Constants.KEY_APP_MP_VERSION); + appendKeyValue(stringBuilder, "MpAPP版本", val); + } + if (mProps.containsKey(Constants.KEY_APP_MPMASTER_VERSION)) { + String val = (String) mProps.get(Constants.KEY_APP_MPMASTER_VERSION); + appendKeyValue(stringBuilder, "MpMaster版本", val); + } + + String vendorName = ""; + if (mProps.containsKey(Constants.KEY_GSM_VENDOR_NAME)) { + vendorName = mProps.get(Constants.KEY_GSM_VENDOR_NAME); + } + appendKeyValue(stringBuilder, "移动运营商", vendorName); int numberOfSimcard = 0; if (mProps.containsKey(Constants.KEY_RO_MODEMS_MAX_COUNT)) { - String val = (String)mProps.get(Constants.KEY_RO_MODEMS_MAX_COUNT); + String val = (String) mProps.get(Constants.KEY_RO_MODEMS_MAX_COUNT); numberOfSimcard = Integer.parseInt(val); } - String signalLevel = ""; List iccids = new ArrayList<>(); for (int idx = 1; idx <= numberOfSimcard; idx++) { String key = Constants.KEY_RO_SIGNAL_STRNGTH_PREFIX + Integer.toString(idx); if (mProps.containsKey(key)) { - String val = (String)mProps.get(key); + String val = (String) mProps.get(key); int pos = val.indexOf(","); if (pos != -1) { String ss = val.substring(0, pos); @@ -601,49 +635,30 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis if (!TextUtils.isEmpty(signalLevel)) { signalLevel += "/"; } - signalLevel += ss + "," + Integer.toString(sl); } } - key = Constants.KEY_RO_ICCID_PREFIX + Integer.toString(idx - 1); if (mProps.containsKey(key)) { - String val = (String)mProps.get(key); + String val = (String) mProps.get(key); byte[] bytes = Base64.decode(val, Base64.DEFAULT); String str = new String(bytes, Charset.defaultCharset()); iccids.add(str); } } - - appendKeyValue(stringBuilder, "CMDID", mAppConfig.cmdid, true); - - appendKeyValue(stringBuilder, "主站", (TextUtils.isEmpty(mAppConfig.server) ? "" : mAppConfig.server) + ":" + Integer.toString(mAppConfig.port)); - - appendKeyValue(stringBuilder, "通道数", Integer.toString(mAppConfig.channels)); - - if (mProps.containsKey(Constants.KEY_APP_MP_VERSION)) { - String val = (String)mProps.get(Constants.KEY_APP_MP_VERSION); - appendKeyValue(stringBuilder, "APP版本", val); - } - - String vendorName = ""; - if (mProps.containsKey(Constants.KEY_GSM_VENDOR_NAME)) { - vendorName = mProps.get(Constants.KEY_GSM_VENDOR_NAME); - } - - appendKeyValue(stringBuilder, "移动运营商", vendorName); appendKeyValue(stringBuilder, "移动信号", signalLevel); + for (String iccid : iccids) { appendKeyValue(stringBuilder, "ICCID", iccid); } if (mProps.containsKey(Constants.KEY_IMEI)) { - String val = (String)mProps.get(Constants.KEY_IMEI); + String val = (String) mProps.get(Constants.KEY_IMEI); appendKeyValue(stringBuilder, "IMEI1", val); } if (mProps.containsKey(Constants.KEY_IMEI2)) { - String val = (String)mProps.get(Constants.KEY_IMEI2); + String val = (String) mProps.get(Constants.KEY_IMEI2); appendKeyValue(stringBuilder, "IMEI2", val); } @@ -674,32 +689,15 @@ public class DeviceActivity extends AppCompatActivity implements View.OnClickLis @Override public void onClick(View v) { switch (v.getId()) { - case R.id.takePhoto1: - takePhoto(1, 255, true); - break; - case R.id.takePhoto2: - takePhoto(2, 255, true); - break; - case R.id.takePhoto3: - takePhoto(3, 255, true); - break; - case R.id.takePhoto4: - takePhoto(4, 255, true); - break; - case R.id.takeVideo1: - takeVideo(1, 255, false); - break; - case R.id.takeVideo2: - takeVideo(2, 255, false); - break; - case R.id.takeVideo3: - takeVideo(3, 255, false); - break; - case R.id.takeVideo4: - takeVideo(4, 255, false); - break; - + } + } + @Override + public void onItemClick(View v, ChannelBean bean, int adapterType) { + if (adapterType == photoAdapter) { + takePhoto(bean.getChannel(), 255, true); + } else if (adapterType == videoAdapter) { + takeVideo(bean.getChannel(), 255, false); } } } \ No newline at end of file diff --git a/app/src/main/java/com/xypower/mpremote/ImageActivity.java b/app/src/main/java/com/xypower/mpremote/ImageActivity.java index d4ad32d..8e63243 100644 --- a/app/src/main/java/com/xypower/mpremote/ImageActivity.java +++ b/app/src/main/java/com/xypower/mpremote/ImageActivity.java @@ -90,54 +90,42 @@ public class ImageActivity extends AppCompatActivity { } }; private ActivityImageBinding binding; + private String path;//图片地址 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ActionBar actionBar = getSupportActionBar(); - actionBar.setDisplayHomeAsUpEnabled(true); - binding = ActivityImageBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); + initIntent(); binding.imageView.setImageDrawable(null); - binding.imageView.setClickable(true); binding.imageView.setOnTouchListener(mDelayHideTouchListener); - binding.imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ImageActivity.this.finish(); } }); - - Intent intent = getIntent(); - String path = intent.getStringExtra("path"); if (path != null) { loadImage(path); } } + private void initIntent() { + Intent intent = getIntent(); + path = intent.getStringExtra("path"); + } + @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - binding.imageView.requestLayout(); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return false; - default: - return super.onOptionsItemSelected(item); - } - } private boolean loadImage(String path) { @@ -176,8 +164,6 @@ public class ImageActivity extends AppCompatActivity { if (!localDevicePath.exists()) { localDevicePath.mkdirs(); } - - // binding.imagesView. } private List> getData() { @@ -209,12 +195,12 @@ public class ImageActivity extends AppCompatActivity { return mItems; } - private void refreshListView() { - mAdapter = new ImagesAdaper(this, getData(), R.layout.list_item, new String[] { "img", "text" }, - new int[] { R.id.id_img, R.id.id_text }); - - binding.imagesView.setAdapter(mAdapter); - } +// private void refreshListView() { +// mAdapter = new ImagesAdaper(this, getData(), R.layout.list_item, new String[] { "img", "text" }, +// new int[] { R.id.id_img, R.id.id_text }); +// +// binding.imagesView.setAdapter(mAdapter); +// } public class ImagesAdaper extends SimpleAdapter { public ImagesAdaper(Context context, List> items, int resource, String[] from, int[] to) { diff --git a/app/src/main/java/com/xypower/mpremote/MainActivity.java b/app/src/main/java/com/xypower/mpremote/MainActivity.java index bfe85a2..03e49f0 100644 --- a/app/src/main/java/com/xypower/mpremote/MainActivity.java +++ b/app/src/main/java/com/xypower/mpremote/MainActivity.java @@ -4,50 +4,32 @@ import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; -import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.Manifest; import android.app.AlertDialog; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Color; -import android.net.ConnectivityManager; import android.net.DhcpInfo; -import android.net.Network; -import android.net.NetworkCapabilities; -import android.net.NetworkInfo; -import android.net.NetworkRequest; -import android.net.wifi.ScanResult; -import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; -import android.net.wifi.WifiNetworkSpecifier; -import android.net.wifi.WifiNetworkSuggestion; import android.os.Build; import android.os.Bundle; -import android.os.Handler; -import android.os.Parcelable; import android.provider.Settings; import android.text.TextUtils; import android.text.format.Formatter; import android.util.Log; -import android.view.Menu; import android.view.View; -import com.xypower.mpremote.bean.WifiInfoBean; import com.xypower.mpremote.databinding.ActivityMainBinding; import java.util.ArrayList; -import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { diff --git a/app/src/main/java/com/xypower/mpremote/StreamActivity.java b/app/src/main/java/com/xypower/mpremote/StreamActivity.java index a68a462..c105868 100644 --- a/app/src/main/java/com/xypower/mpremote/StreamActivity.java +++ b/app/src/main/java/com/xypower/mpremote/StreamActivity.java @@ -49,11 +49,6 @@ public class StreamActivity extends AppCompatActivity { mHandler = new Handler(); - ActionBar actionBar = getSupportActionBar(); - // 显示返回按钮 - actionBar.setDisplayHomeAsUpEnabled(true); - // 去掉logo图标 - actionBar.setDisplayShowHomeEnabled(false); Intent intent = getIntent(); mDeviceIp = intent.getStringExtra("deviceIp"); @@ -64,8 +59,6 @@ public class StreamActivity extends AppCompatActivity { int netCamera = intent.getIntExtra("netCamera", 0); int vendor = intent.getIntExtra("vendor", 0); - actionBar.setTitle(getResources().getString(R.string.channel) + Integer.toString(channel)); - String url = "rtmp://" + mDeviceIp + "/live/0"; String cmd = "am start -n com.xypower.mplive/com.xypower.mplive.MainActivity" diff --git a/app/src/main/java/com/xypower/mpremote/adapter/ItemAdapter.java b/app/src/main/java/com/xypower/mpremote/adapter/ItemAdapter.java index 7019f14..43168ab 100644 --- a/app/src/main/java/com/xypower/mpremote/adapter/ItemAdapter.java +++ b/app/src/main/java/com/xypower/mpremote/adapter/ItemAdapter.java @@ -1,68 +1,52 @@ package com.xypower.mpremote.adapter; import android.annotation.SuppressLint; -import android.graphics.Color; -import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.xypower.mpremote.R; -import com.xypower.mpremote.bean.WifiInfoBean; +import com.xypower.mpremote.bean.ChannelBean; import com.xypower.mpremote.interfaces.OnItemClickListener; import java.util.ArrayList; import java.util.List; public class ItemAdapter extends RecyclerView.Adapter { + public int adapterType; public OnItemClickListener listener; - private List itemList = new ArrayList<>(); + private List itemList = new ArrayList<>(); - public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + public class MyViewHolder extends RecyclerView.ViewHolder { private TextView title; - private OnItemClickListener listeners; - private ImageView img; - public MyViewHolder(View view, OnItemClickListener listener) { super(view); - this.listeners = listener; - title = view.findViewById(R.id.id_text); - img = view.findViewById(R.id.id_img); - view.setOnClickListener(this); + title = view.findViewById(R.id.channel); } - public TextView getTitle() { return title; } - - public ImageView getImg() { - return img; - } - - @Override - public void onClick(View v) { - if (listeners != null) { - listeners.onItemClick(v, getAdapterPosition()); - } - } } public void setOnClickListener(OnItemClickListener listener) { this.listener = listener; } - public void setItemList(List list) { + public void setItemList(List list) { this.itemList = list; - this.notifyDataSetChanged(); + notifyDataSetChanged(); } + public void setAdapterType(int type) { + this.adapterType = type; + } + @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -72,37 +56,13 @@ public class ItemAdapter extends RecyclerView.Adapter @Override public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) { - WifiInfoBean wifiInfoBean = itemList.get(position); - String text = wifiInfoBean.getText(); - boolean connected = wifiInfoBean.isConnected(); - int signalLevel = wifiInfoBean.getSignalLevel(); - if (text.startsWith("XY") || text.startsWith("xy")) { - holder.getTitle().setTextColor(Color.RED); - holder.getTitle().setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); - } else { - holder.getTitle().setTextColor(Color.BLACK); - holder.getTitle().setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); - } - holder.getTitle().setText(text); - int drawableId = R.drawable.ic_wifi_signal_0; - switch (signalLevel) { - case 1: - drawableId = connected ? R.drawable.ic_wifi_signal_1_green : R.drawable.ic_wifi_signal_1; - break; - case 2: - drawableId = connected ? R.drawable.ic_wifi_signal_2_green : R.drawable.ic_wifi_signal_2; - break; - case 3: - drawableId = connected ? R.drawable.ic_wifi_signal_3_green : R.drawable.ic_wifi_signal_3; - break; - case 4: - drawableId = connected ? R.drawable.ic_wifi_signal_4_green : R.drawable.ic_wifi_signal_4; - break; - default: - drawableId = connected ? R.drawable.ic_wifi_signal_0_green : R.drawable.ic_wifi_signal_0; - break; - } - holder.getImg().setImageResource(drawableId); + ChannelBean channelBean = itemList.get(position); + holder.getTitle().setText(channelBean.getChannelname()); + holder.itemView.setOnClickListener(v -> { + if (listener != null) { + listener.onItemClick(v, channelBean,adapterType); + } + }); } @Override diff --git a/app/src/main/java/com/xypower/mpremote/bean/ChannelBean.java b/app/src/main/java/com/xypower/mpremote/bean/ChannelBean.java new file mode 100644 index 0000000..f86687b --- /dev/null +++ b/app/src/main/java/com/xypower/mpremote/bean/ChannelBean.java @@ -0,0 +1,48 @@ +package com.xypower.mpremote.bean; + +import org.json.JSONObject; + +public class ChannelBean { + public ChannelBean() { + } + + String text; + + int channel; + String channelname; + JSONObject jsonObject; + + public JSONObject getJsonObject() { + return jsonObject; + } + + public void setJsonObject(JSONObject jsonObject) { + this.jsonObject = jsonObject; + } + + public String getChannelname() { + return channelname; + } + + public void setChannelname(String channelname) { + this.channelname = channelname; + } + + public int getChannel() { + return channel; + } + + public void setChannel(int channel) { + this.channel = channel; + } + + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + +} diff --git a/app/src/main/java/com/xypower/mpremote/bean/WifiInfoBean.java b/app/src/main/java/com/xypower/mpremote/bean/WifiInfoBean.java deleted file mode 100644 index 76068d1..0000000 --- a/app/src/main/java/com/xypower/mpremote/bean/WifiInfoBean.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.xypower.mpremote.bean; - -public class WifiInfoBean { - - String text; - - int signalLevel; - - boolean connected; - - public int getSignalLevel() { - return signalLevel; - } - - public void setSignalLevel(int signalLevel) { - this.signalLevel = signalLevel; - } - - public boolean isConnected() { - return connected; - } - - public void setConnected(boolean connected) { - this.connected = connected; - } - - public WifiInfoBean() { - - } - - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - -} diff --git a/app/src/main/java/com/xypower/mpremote/interfaces/OnItemClickListener.java b/app/src/main/java/com/xypower/mpremote/interfaces/OnItemClickListener.java index af279e2..8d6a0f9 100644 --- a/app/src/main/java/com/xypower/mpremote/interfaces/OnItemClickListener.java +++ b/app/src/main/java/com/xypower/mpremote/interfaces/OnItemClickListener.java @@ -2,7 +2,9 @@ package com.xypower.mpremote.interfaces; import android.view.View; +import com.xypower.mpremote.bean.ChannelBean; + public interface OnItemClickListener { - void onItemClick(View v, int position); + void onItemClick(View v, ChannelBean position, int adapterType); } diff --git a/app/src/main/res/layout/activity_device.xml b/app/src/main/res/layout/activity_device.xml index 8fb280c..e7659a1 100644 --- a/app/src/main/res/layout/activity_device.xml +++ b/app/src/main/res/layout/activity_device.xml @@ -6,21 +6,69 @@ android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".DeviceActivity"> + + layout="@layout/toolbar" /> + +