gpt4 book ai didi

java - 将蓝牙连接传递给新的 Activity

转载 作者:行者123 更新时间:2023-12-01 15:56:04 25 4
gpt4 key购买 nike

我有一个包含主 Activity 的应用程序,它有一个非常简单的屏幕,其中包含所有应用程序设置选项和一些用户选择。主屏幕按钮启动其他 Activity 。

(1) 我现在正在应用程序中实现蓝牙扫描仪,我希望能够编辑设置并在主 Activity 上建立蓝牙连接,并将该连接(也许通过 Bundle 或 Parcelable?)传递给其他 Activity 。

我将 Bundle 作为传递连接的一种方式进行查找,但它似乎只接受原始类型和基本类型作为值。我注意到 Intent.putExtra(String, Parcelable) 可用,但 Parcel 有点让我困惑。实现这一点的最佳方法是什么,或者是否可能?

一些相关代码:

//subclass definitions for the Runnables which start the applications in their own threads
private final Handler smsHandler = new Handler();
private final Handler smsOutHandler = new Handler();

private final Runnable smsIntentRunnable = new Runnable() {
public void run() {
Intent smsIntent = new Intent(smsMobile.this, smsActivity.class);
startActivity(smsIntent);
}
};

private final Runnable smsOutIntentRunnable = new Runnable() {
public void run() {
Intent smsOutIntent = new Intent(smsMobile.this, smsOutActivity.class);
startActivity(smsOutIntent);
}
};

//button listeners located in onCreate(), which start the Activities
newTicket.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
smsHandler.post(smsIntentRunnable);
}
});

updateTicket.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
smsOutHandler.post(smsOutIntentRunnable);
}
});

(2) 我还可以传递数据库连接吗?我知道 SQLiteOpenHelper 必须被子类化,这可能会使 IPC 复杂化,但认为它仍然可能以某种方式实现?

最佳答案

我正在重写一个应用程序,以在两个 Activity 之间共享蓝牙服务。以前,我刚刚通过在启动 Activity (设置服务以及启动其他 Activity 的位置)中将蓝牙服务初始化为公共(public)对象来解决该问题,然后调用 .read() 和 .write( )新 Activity 中的公共(public)服务职能。这对于写入来说效果很好,但是对于读取来说有点繁重(每次我期望数据返回时我都必须启动一个线程,坐下来等待数据)。我已将所有其他项目迁移为仅在服务读取某些关键数据时执行从蓝牙服务处理程序提示的某些操作(例如,在收到编码温度数据时更新用户界面上的温度)。为了能够通过这两种 Activity 进行更优雅的阅读,我在蓝牙服务中添加了一个新功能:

/**
* Change the handler (route handler info to new activity). */
public synchronized void newHandler(Handler handle) {
mHandler = handle;
}

然后调用此函数,在新 Activity 启动时从新 Activity 重新分配新处理程序(例如,“StartingActivity.mBTService.newHandler(NewActivityHandler);”)当然,当返回到 StartingActivity 时,请确保适本地重新分配 Handler ;-)

令我惊讶的是,它确实有效,不需要通过应用程序将蓝牙服务变成单例、可分割对象或全局服务(我都无法成功编码)的所有开销。

我将进行更彻底的测试,但希望这对某人有帮助(是时候我回馈一些东西了 - 我从这个社区学到了很多东西)!

关于java - 将蓝牙连接传递给新的 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5030150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com