我正在尝试从三星S-health SDK获得的blob文件中获取数据。 我实际做的是:
Cursor c = null;
int i = 0;
c = result.getResultCursor();
if (c != null) {
while ( c.moveToNext() ) {
byte[] live_data = c.getBlob( c.getColumnIndex( HealthConstants.Exercise.LIVE_DATA ) );
if ( live_data != null ) {
// Do something with data.
} else {
Log.d(APP_TAG, "there is no live data.");
}
}
} else {
Log.d(APP_TAG, "There is no result.");
}
" live_data"是一个包含带有所有数据的json的压缩文件。 我尝试用ZipInputStream解压缩它没有成功。 我该怎么办?
答案 0 :(得分:0)
最后,经过多次尝试,我找到了解决方案。 问题是blob文件是一个gzip文件。 下面是一个解压缩字节数组的简单代码(在我的例子中是live_data):
ByteArrayInputStream inputStream = new ByteArrayInputStream(live_data);
GZIPInputStream gzipInputStream = new GZIPInputStream(inputStream);
BufferedReader bf = new BufferedReader(new
InputStreamReader(gzipInputStream, "UTF-8"));
String outStr = "";
String line;
while ((line=bf.readLine())!=null) {
outStr += line;
}
其中outStr是我想要检索的文件的内容,live_data是blob字节数组。 我希望这对其他人也有帮助。
答案 1 :(得分:0)
您是否尝试使用WinRar解压缩BLOB文件?
我尝试了很多天,最后我将扩展名改为.rar然后我得到了10倍大的明文数据样本(例如:{"卡路里":0.0,"距离":0.0, " HEART_RATE":89.0," START_TIME":1521297002178},)
我有S-Health 5.16.0.043及更早的DataViewer1.2.0.apk。