2014-01-09 75 views
2

我有一个应用程序需要实现“共享”选项,以将设备本地数据库中包含的数据传输到另一个设备,该设备可以将该数据插入到该设备设备数据库中的适当表格。将数据库数据从一个Android设备传输到另一个设备

我有蓝牙通信工作,我只是寻找一个很好的方式来传输这些数据。有没有简单的方法在设备A上执行sqlite dump,使用蓝牙将其传输到设备B,并让设备B重新插入此数据?

回答

1

实施ContentProvider是您如何利用Android框架对数据库执行CRUD操作。

一个好的方法可能是将一行转换成Json,并在接收端解包该字符串以插入它。这种方式更易于测试,更容易从发送过程中的错误中恢复,但可能会很慢,具体取决于数据的大小。为了加快速度,我会批量发送多行并测试以查看哪种批量大小对于速度和可靠性是最好的。

一种快速的方法可能是转储数据平面文件,然后用FileProvider提供访问该文件作为URI和尝试像从here

public void sendFile(Uri uri, BluetoothSocket bs) throws IOException { 
      BufferedInputStream bis = new BufferedInputStream(getContentResolver().openInputStream(uri)); 
      OutputStream os = bs.getOutputStream(); 
     try { 
      int bufferSize = 1024; 
     byte[] buffer = new byte[bufferSize]; 

     // we need to know how may bytes were read to write them to the byteBuffer 
     int len = 0; 
     while ((len = bis.read(buffer)) != -1) { 
      os.write(buffer, 0, len); 
     } 
    } finally { 
     bis.close(); 
     os.flush(); 
     os.close(); 
     bs.close(); 
    } 
} 
以下
相关问题