Android JNI保存到SD卡

时间:2017-01-19 10:49:28

标签: android c android-ndk save android-sdcard

我的目标很简单:将使用我的代码生成的数据保存到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);
  }

0 个答案:

没有答案