Android用tabhost实现 界面切换,每个界面为一个独立的activity操作

作者:AI蜗牛车 时间:2021-11-09 11:22:26 

我就废话不多说了,大家还是直接看代码吧~


// 要extends TabActivity
public class Main_activity extends TabActivity {
 private TabHost tabHost;// 建立Tabhost控件

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

tabHost = getTabHost();
   addTab("act1", "界面1", blue_tooth_Activity.class);//添加
   addTab("act2", "界面2", map_Activity.class);
   addTab("act3", "界面3", plane_parameter_activity.class);

setContentView(tabHost);// 显示

}
 /**
  * 添加Activity标签
  * @param tag  标识
  * @param title 标签标题
  * @param clazz 激活的界面
  */
 private void addTab(String tag, String title, Class clazz) {
   TabHost.TabSpec tabSpec = tabHost.newTabSpec(tag);
   tabSpec.setIndicator(title);

Intent intent = new Intent(getApplicationContext(),clazz);
   tabSpec.setContent(intent);
   tabHost.addTab(tabSpec);
 }

@Override
 protected void onStop() {
   super.onStop();
 }
}

补充知识:Android BLE中传输数据的最大长度怎么破

好多小伙伴们都被一个事儿困扰过:

想在gatt client上(一般是手机上)传输长一点的数据给gatt server(一般是一个Bluetooth smart设备,即只有BLE功能的设备),但通过

writeCharacteristic(BluetoothGattCharacteristic)

来写的时候发现最多只能写入20个byte的数据。

这篇文章会回答下面几个问题:

1)为什么会是20?

2)如何突破20?

3)如何更优雅的来实现?

第一个问题,为什么为限制成20个字节?

core spec里面定义了ATT的默认MTU为23个bytes,除去ATT的opcode一个字节以及ATT的handle2个字节之后,剩下的20个字节便是留给GATT的了。

考虑到有些Bluetooth smart设备功能弱小,不敢太奢侈的使用内存空间,因此core spec规定每一个设备都必须支持MTU为23。

在两个设备连接初期,大家都像新交的朋友一样,不知对方底细,因此严格的按照套路来走,即最多一次发20个字节,是最保险的。

由于ATT的最大长度为512byte,

因此一般认为MTU的最大长度为512个byte就够了,再大也没什么意义,你不可能发一个超过512的ATT的数据,就像是孙猴子跑不过五行山一样。

所以ATT的MTU的最大长度可视为512个bytes。

第二个问题,如何突破20?

很简单嘛,改变传输的ATT的MTU就行了,大家经过友好的协商,得到双方都想要的结果,是最好的。在Android上(API 21),改变ATT MTU的接口为:

public boolean requestMtu (int mtu) Added in API level 21 Request an MTU size used for a given connection. When performing a write request operation (write without response), the data sent is truncated to the MTU size. This function may be used to request a larger MTU size to be able to send more data at once. A onMtuChanged(BluetoothGatt, int, int) callback will indicate whether this operation was successful. Requires BLUETOOTH permission. Returns true, if the new MTU value has been requested successfully

大声的说出来你想要一下子传多少,调用上面的接口就可以了,然后在下面的函数中看最终结果(当然了,如果你的peripheral申请改变MTU并且成功的话,那这个回调也会被调用):


@Override
public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
 super.onMtuChanged(gatt, mtu, status);

if (status == BluetoothGatt.GATT_SUCCESS) {
   this.supportedMTU = mtu;//local var to record MTU size
 }
}

之后你就可以快乐的发送supportedMTU-3的长度的数据了。

第三个问题,如何优雅的来实现?

俗话说得好,郎有情就怕妾无意。万一对方设备不同意你的请求怎么办?

对于app来说,一般是知道自己要最大发送多少数据的,例如一次要发100个bytes,那么就首先试试申请一下103,失败的话,则申请一下53,即二分法,剩下的只能自己分段拆着发了。

一般来讲,app的开发者和对端设备的开发者都是同一伙儿人,这是好事儿,他们可以根据自己设备的硬件情况,来商量MTU应该是多少。

总之,把事儿摆到桌面上,提前做好,会使得你的程序更加professional。

来源:https://blog.csdn.net/qq_33431368/article/details/70799727

标签:Android,tabhost,activity
0
投稿

猜你喜欢

  • http协议进阶之Transfer-Encoding和HttpCore实现详解

    2023-11-03 14:22:05
  • SpringBoot整合Redis正确的实现分布式锁的示例代码

    2023-05-05 14:59:58
  • Java 8 Stream操作类型及peek示例解析

    2021-07-17 20:42:08
  • Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码

    2023-12-17 02:57:28
  • Java实现的并发任务处理实例

    2023-05-22 17:51:10
  • Android Studio 通过登录功能介绍SQLite数据库的使用流程

    2023-09-22 00:37:29
  • 解决JavaWeb读取本地json文件以及乱码的问题

    2023-09-14 18:35:14
  • 详解springmvc控制登录用户session失效后跳转登录页面

    2021-12-08 19:36:40
  • Flutter 分页功能表格控件详细解析

    2023-09-22 20:02:45
  • Android scrollToTop实现点击回到顶部(兼容PullTorefreshScrollview)

    2021-07-29 09:06:37
  • SpringBoot中使用JeecgBoot的Autopoi导出Excel的方法步骤

    2023-03-31 03:38:11
  • 如何只返回实体类中的部分字段问题

    2022-11-28 05:09:53
  • mybatis-plus update更新操作的三种方式(小结)

    2023-10-08 14:05:08
  • Java协议字节操作工具类详情

    2023-11-02 06:25:02
  • 利用Postman和Chrome的开发者功能探究项目(毕业设计项目)

    2021-10-27 10:19:43
  • SpringBoot之Json的序列化和反序列化问题

    2021-11-12 07:17:29
  • Struts2学习笔记(8)-Result常用类型

    2023-06-05 11:10:19
  • C# yield在WCF中的错误用法(一)

    2022-06-05 06:36:57
  • VS2022+unity3D开发环境搭建的实现步骤

    2023-02-10 10:13:47
  • Java编程常见内存溢出异常与代码示例

    2021-12-14 14:45:08
  • asp之家 软件编程 m.aspxhome.com