在Android Wear中使用现有数据库

MDXDave

我正在尝试为我现有的应用程序构建一个磨损应用程序。我的手持应用程序中已经有一个SQLite数据库,现在我想尝试在我的Wear应用程序中使用它们。

他们是否有可能将数据库发送给Wear,或者我可以从Wear应用程序通过掌上电脑访问数据库?

我目前的想法是通过Wearable.DataApi传输所有项目,但这听起来并不是最好的解决方案。

例如,我不相信Google Keep会单独转移所有笔记。

还有其他想法吗?

MDXDave

我找到了一个快速的解决方案,可以将整个数据库从手机传输到Smartwatch。

首先,我创建一个帮助程序类,该类将数据库内容转换为json-string,可以使用Wearable.DataApi将其发送到smartwatch

DatabaseToJSON.java:

public class DatabaseToJSON {
DatabaseHandler dbhandler;

public DatabaseToJSON(Context context) {
    dbhandler = new DatabaseHandler(context);
}

public JSONObject getJSON() throws JSONException{
    Item[] item = null;
    JSONObject pl = new JSONObject();
    item = dbhandler.getItems();
    dbhandler.close();
    JSONArray jsonArray = new JSONArray();  
    for(int i=0;i<item.length;i++){
        JSONObject val = new JSONObject();
        try {
            val.put("id", item[i].getID());
            val.put("name", item[i].getName());
            ...
            jsonArray.put(val);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        pl.put(String.valueOf(j), jsonArray);
    }

     if(jsonArray.length()<1){
       pl.put(String.valueOf(j),new JSONArray());
     }

    }

    JSONObject result = new JSONObject();
    result.put("data",pl);
    return result;      
} }

DemoActivity.java(电话):

public class DemoActivity extends Activity implements  GoogleApiClient.ConnectionCallbacks,  GoogleApiClient.OnConnectionFailedListener {

/** Android Wear **/
GoogleApiClient googleClient;

@Override
public void onStart(){
    super.onStart();
    googleClient.connect();
}


@Override
public void onStop(){
    if (null != googleClient && googleClient.isConnected()) {
        googleClient.disconnect();
    }
    super.onStop();
}

 @Override
 protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     googleClient = new GoogleApiClient.Builder(this)
             .addApi(Wearable.API)
             .addConnectionCallbacks(this)
             .addOnConnectionFailedListener(this)
             .build();

     ...
}

@Override
public void onConnected(Bundle bundle) {

    DatabaseToJSON dbJson = new DatabaseToJSON(DemoActivity.this);
    try {
        JSONObject json = dbJson.getJSON();
        new SendToDataLayerThread("/path", json.toString()).start();
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

class SendToDataLayerThread extends Thread {
    String path;
    String message;

    SendToDataLayerThread(String p, String msg) {
        path = p;
        message = msg;
    }

    public void run() {
        NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(googleClient).await();
        for (Node node : nodes.getNodes()) {
            MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(googleClient, node.getId(), path, message.getBytes()).await();
            if (result.getStatus().isSuccess()) {
                Log.v("myTag", "Message: {" + message + "} sent to: " + node.getDisplayName());
            }
            else {
                Log.v("myTag", "ERROR: failed to send Message");
            }
        }
    }
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}

}

DataLayerListenerService.java(wear)

public class DataLayerListenerService extends WearableListenerService {

@Override
public void onMessageReceived(MessageEvent messageEvent) {

if (messageEvent.getPath().equals("/path")) {
    final String message = new String(messageEvent.getData());


    // do what you want with the json-string
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor edit = pref.edit();
    edit.putString("demo_json",message).apply();

}
else {
    super.onMessageReceived(messageEvent);
}
}

添加到AndroidManifest.xml(wear)

 <service android:name=".DataLayerListenerService" >
        <intent-filter>
            <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
        </intent-filter>
    </service>

收到穿戴上的json-string后,您可以将它们保存在穿戴上的数据库中,或对其进行其他操作...

我认为这是在手持设备和穿戴设备之间传输此类数据的最简单方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中使用SQLCipher加密/解密现有数据库

来自分类Dev

在Android中使用SQLCipher加密/解密现有数据库

来自分类Dev

从现有数据库中检索数据并将其显示在 android 中的 TextView 中

来自分类Dev

在Android上创建新数据库之前检查现有数据库的最佳方法是什么

来自分类Dev

如何在Android Project中插入现有数据库

来自分类Dev

在Android中安装应用程序后如何复制现有数据库

来自分类Dev

如何将数据添加到我的Android应用程序中的现有数据库?

来自分类Dev

在Django中使用现有数据库

来自分类Dev

在Django Python中使用现有数据库

来自分类Dev

在 Laravel 5.3 中使用现有数据库

来自分类Dev

Android将表动态添加到资产文件夹中的现有数据库

来自分类Dev

Android制作带有数据库的测验应用

来自分类Dev

带有数据库的Android Searchview无法搜索

来自分类Dev

在Android中使用外部数据库

来自分类Dev

ListView在android中使用数据库

来自分类Dev

在android中使用本地数据库

来自分类Dev

在Android开发中使用数据库

来自分类Dev

ListView在android中使用数据库

来自分类Dev

Android - 在 Firebase 数据库中查找现有子项

来自分类Dev

在现有的Android项目中使用LibGdx库?

来自分类Dev

在MVC中使用Entity Framework Code First更新现有数据库

来自分类Dev

如何在Forecast.io中使用现有数据库

来自分类Dev

如何在Android中使用有关sqlite数据库的insert()方法

来自分类Dev

如何在Android中显示没有数据库的脱机在线数据

来自分类Dev

rake db:使用现有数据库迁移

来自分类Dev

PersistenceJS:使用migrate()更新现有数据库

来自分类Dev

ActiveAndroid使用现有数据库

来自分类Dev

使用现有数据库MySQL的Rails应用

来自分类Dev

使用现有数据库安装PHPmyadmin

Related 相关文章

  1. 1

    在Android中使用SQLCipher加密/解密现有数据库

  2. 2

    在Android中使用SQLCipher加密/解密现有数据库

  3. 3

    从现有数据库中检索数据并将其显示在 android 中的 TextView 中

  4. 4

    在Android上创建新数据库之前检查现有数据库的最佳方法是什么

  5. 5

    如何在Android Project中插入现有数据库

  6. 6

    在Android中安装应用程序后如何复制现有数据库

  7. 7

    如何将数据添加到我的Android应用程序中的现有数据库?

  8. 8

    在Django中使用现有数据库

  9. 9

    在Django Python中使用现有数据库

  10. 10

    在 Laravel 5.3 中使用现有数据库

  11. 11

    Android将表动态添加到资产文件夹中的现有数据库

  12. 12

    Android制作带有数据库的测验应用

  13. 13

    带有数据库的Android Searchview无法搜索

  14. 14

    在Android中使用外部数据库

  15. 15

    ListView在android中使用数据库

  16. 16

    在android中使用本地数据库

  17. 17

    在Android开发中使用数据库

  18. 18

    ListView在android中使用数据库

  19. 19

    Android - 在 Firebase 数据库中查找现有子项

  20. 20

    在现有的Android项目中使用LibGdx库?

  21. 21

    在MVC中使用Entity Framework Code First更新现有数据库

  22. 22

    如何在Forecast.io中使用现有数据库

  23. 23

    如何在Android中使用有关sqlite数据库的insert()方法

  24. 24

    如何在Android中显示没有数据库的脱机在线数据

  25. 25

    rake db:使用现有数据库迁移

  26. 26

    PersistenceJS:使用migrate()更新现有数据库

  27. 27

    ActiveAndroid使用现有数据库

  28. 28

    使用现有数据库MySQL的Rails应用

  29. 29

    使用现有数据库安装PHPmyadmin

热门标签

归档