从android app

时间:2018-03-29 14:54:46

标签: android arrays

我有应用程序,我去年写了从外部设备读取数据到时间,日期和温度的字节数组。外部设备可以存储一小时的温度,并且存储了六周的温度。外部设备不断覆盖最旧的数据,所以我总是有六周的温度。我的应用程序有一个字符串数组1008长,可存储六周的温度,如下所示

private static final String[] fullDataArray = new String[1008];

我的应用程序从字节数组中读取原始数据,然后写入字符串数组的每个元素,直到它完成所有1008,如下所示,

fullDataArray[arrayCount] = (nowDataString + " Temp = " + tempString + "c");

然后在列表视图中显示字符串数组中的数据,如下所示

private void printList(){
        // create array adaptor and assign array to list view
        final ArrayAdapter adapter = new ArrayAdapter(this,R.layout.data_layout,R.id.textItem,fullDataArray);
        setListAdapter(adapter);
    }

然后我正在阅读这个列表视图,该视图有六周的日期,时间和温度数据,并手动写入excel文件以保存记录的数据。

有没有办法导出原始字节数组或字符串数​​组以保存我手动将所有数据复制到excel之前丢失?

我没有在此应用程序之前完成任何Android编程,因此我没有做任何事情,所以我有点生疏。

关于如何解决这个问题的任何想法或建议都将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

感谢Barns的建议。

我在手机的内部存储空间中创建了一个CSV文件,我可以将其读取到我的PC上以复制数据,无需发送电子邮件。

在API 18上的旧手机以及新手机上使用此功能,因此无法创建适用于这两种API的文件,并在下面的解决方案中找到了解决方案。

在代码中设置权限

if(Build.VERSION.SDK_INT>22){
            requestPermissions(new String[] {"android.permission.WRITE_EXTERNAL_STORAGE"}, 1);
        }

在清单中设置权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

创建了一个新文件并打开了输出流

File file;
FileOutputStream fos;
OutputStreamWriter myOutWriter = null;

// create file and output stream to save data to csv file
String csvFile = "Temp Log.csv";
String path = Environment.getExternalStorageDirectory() + "/Documents";
file = new File(path, csvFile);
try {
    // create csv file stream
    Log.d(TAG,"Creating File Stream!");
    fos = new FileOutputStream(file);
    myOutWriter = new OutputStreamWriter(fos);
}catch(Exception e){
    e.printStackTrace();
}

使用列表视图的数据

为CSV文件创建了我的字符串
String csvData = new String(dayStr + "/" + monthStr + "/" + yearStr + "," + hourStr + ":00,");
csvData = (csvData + tempString);
csvData = (csvData + "\n");

写入CSV文件

try {
     myOutWriter.write(csvData);
}catch(Exception e){
     e.printStackTrace();
}

关闭流

try {
    // close the csv output stream
    myOutWriter.close();
}catch(Exception e){
     e.printStackTrace();
}

这会在创建列表视图时为每组数据的CSV文件添加一行,并将CSV文件保存到手机上的文档文件夹中。尝试了很多不同的方法来获取文档文件夹和文件的路径,但上面的一个适用于我的手机上的两个API。尝试先创建一个xml文件但是很难向它写入数据?

适合我想要的东西,节省了我很多时间,但任何改进建议都会受到赞赏。