我的目标很简单:将使用我的代码生成的数据保存到SD卡上的某个位置(真实的,而不是模拟的)!但事实证明并非那么简单。我将Android SDK与JNI(用于使用Tango C-API)和lenovo phab 2 pro一起使用,我也阅读了documentation 但是,我找到了帖子,他们只是使用目录" / sdcard"用于文件存储。在我的情况下不起作用。接下来,我在主要活动中尝试的是以下代码,首先找到外部设备:
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath());
导致:
/storage/emulated/0
不幸的是,这不是我真正的SD卡。 我尝试了更多的东西来找到我的外部目录,但都产生了相同的路径。 (如果有兴趣的话,我可以再次搜索它们) 无论我尝试什么,我总是落在一个错误或fiktive SD卡。
以下是我使用的代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.projecttango.examples.cpp.hellodepthperception"
android:versionCode="0"
android:versionName="0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library
android:name="com.projecttango.libtango_device2"
android:required="true" />
<activity
android:label="@string/app_name_long"
android:name=".DepthPerceptionActivity"
android:screenOrientation="nosensor">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
以及我的c代码的相关部分(据我所知):
chdir("/sdcard);
FILE * f_sdcard = fopen("Test.txt", "a");
if(f_sdcard == NULL) {
LOGE("Error: File not created: %d", f_sdcard);
}