2014-02-18 4 views
1

블루투스에서 수신 한 센서 값을 사용하는 학교 프로젝트 용 코드를 쉼표로 구분 된 데이터 로그 파일에 작성하려고합니다. 수십 가지 예제를 시도한 후에 Jelly Bean에서 실행되는 파일 쓰기 기능의 간단한 예제를 얻을 수 없습니다. 이 코드는 안드로이드 4.0.2를 실행하는 개인 장치에서 완벽하게 작동합니다. 다음 예제를 motorola xt1060에서 실행하려고합니다. 이동식 sd 카드는 없지만 외부 저장 장치 사용을 배제하지는 않습니다. 필자는 MTPFS와 함께 리눅스와 윈도우즈를 기본 드라이버와 함께 사용하여 파일 시스템 어디에서나 파일을 찾았지만 스스로 표시하지는 않았습니다. 터미널을 통해 마운트 된 MTPFS를 사용하여 텍스트 파일을 만들 때 텍스트 파일을 볼 수 있으며 사진을 찍을 때 MTP가 문제를 일으키는 것으로 생각하지 않습니다.Android 4.2에서 로그 파일에 쓰기가 작동하지 않습니다. 젤리 빈

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

그리고 내가 볼 수있는 흥미로운 아무것도 :

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 

public class MainActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     path.mkdirs(); 
     File file = new File(path, "test.txt"); 
     Log.d("FILE_TEST", file.getPath()); 

     try { 
      Log.d("FILE_TEST", "Creating buffer"); 
      BufferedWriter buf = new BufferedWriter(new FileWriter(file)); 
      Log.d("FILE_TEST", "Writing to buffer"); 
      buf.write("Hello FS!\n"); 
      Log.d("FILE_TEST", "Flushing buffer"); 
      buf.flush(); 
      Log.d("FILE_TEST", "Closing file"); 
      buf.close(); 
     } catch (IOException e) { 
      Log.d("FILE_TEST","Caught Exception:" + e.toString()); 
     } 
    } 
} 

매니페스트 XML은 다음과 같은 포함 : 여기

은 가장 간단한 자바 4.0에서 작동 내가 작성한 예를하지 4.2 로그에서 발생합니다 :

02-18 00:26:36.075: I/InputReader(859): Reconfiguring input devices. changes=0x00000004 
02-18 00:26:36.075: I/InputReader(859): Device reconfigured: id=6, name='synaptics_dsx_i2c', size 720x1280, orientation 3, mode 1, display id 0 
02-18 00:26:36.533: I/SurfaceFlinger(290): triggers: (post: 0:16) (compose: 0:2) (frame: 0:12) (gap: 411:6519) (rate: 247) (66116 frames) 
02-18 00:26:36.561: I/SurfaceFlinger(290): triggers: (jitter: 0:0) (missed: 0) (105353 vsyncs) 
02-18 00:26:37.045: I/ActivityManager(859): Config changes=480 {1.0 311mcc480mnc en_US ldltr sw360dp w360dp h567dp 320dpi nrml port finger -keyb/v/h -nav/h s.23?spn} 
02-18 00:26:37.051: I/InputReader(859): Reconfiguring input devices. changes=0x00000004 
02-18 00:26:37.051: I/InputReader(859): Device reconfigured: id=6, name='synaptics_dsx_i2c', size 720x1280, orientation 0, mode 1, display id 0 
02-18 00:26:37.101: W/ContextImpl(1155): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1115 android.content.ContextWrapper.sendBroadcast:338 com.motorola.motocare.util.TriggerHelper$TriggerBuilder.send:76 com.motorola.motocare.internal.frameworkevents.PauseResumeTrigger.handleFrameworkEvent:53 com.motorola.motocare.internal.frameworkevents.FwEventMonitor$FrameworkListener.processFrameworkEvent:114 
02-18 00:26:37.124: I/SurfaceFlinger(290): triggers: (post: 0:16) (compose: 0:2) (frame: 0:12) (gap: 411:6520) (rate: 247) (66124 frames) 
02-18 00:26:37.127: D/FILE_TEST(19084): /storage/emulated/0/Download/test.txt 
02-18 00:26:37.127: D/FILE_TEST(19084): Creating buffer 
02-18 00:26:37.127: D/FILE_TEST(19084): Writing to buffer 
02-18 00:26:37.127: D/FILE_TEST(19084): Flushing buffer 
02-18 00:26:37.127: D/FILE_TEST(19084): Closing file 
02-18 00:26:37.186: I/SBar.NetworkController(1008): onReceive: Intent.ACTION_CONFIGURATION_CHANGED Received 
02-18 00:26:37.186: I/SBar.NetworkController(1008): updateTelephonySignalStrength: No service 
02-18 00:26:37.290: I/SurfaceFlinger(290): triggers: (post: 0:16) (compose: 0:2) (frame: 0:12) (gap: 411:6522) (rate: 247) (66132 frames) 
02-18 00:26:37.718: I/SurfaceFlinger(290): triggers: (post: 0:16) (compose: 0:2) (frame: 0:12) (gap: 411:6522) (rate: 247) (66159 frames) 
02-18 00:26:37.743: I/InputReader(859): Reconfiguring input devices. changes=0x00000004 
02-18 00:26:37.743: I/InputReader(859): Device reconfigured: id=6, name='synaptics_dsx_i2c', size 720x1280, orientation 1, mode 1, display id 0 
02-18 00:26:37.744: I/ActivityManager(859): Config changes=480 {1.0 311mcc480mnc en_US ldltr sw360dp w598dp h335dp 320dpi nrml land finger -keyb/v/h -nav/h s.24?spn} 
02-18 00:26:37.776: W/ContextImpl(1155): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1115 android.content.ContextWrapper.sendBroadcast:338 com.motorola.motocare.util.TriggerHelper$TriggerBuilder.send:76 com.motorola.motocare.internal.frameworkevents.PauseResumeTrigger.handleFrameworkEvent:53 com.motorola.motocare.internal.frameworkevents.FwEventMonitor$FrameworkListener.processFrameworkEvent:114 
02-18 00:26:37.817: I/SurfaceFlinger(290): triggers: (post: 0:16) (compose: 0:2) (frame: 0:12) (gap: 411:6523) (rate: 247) (66164 frames) 
02-18 00:26:37.829: I/SurfaceFlinger(290): triggers: (jitter: 0:0) (missed: 0) (105404 vsyncs) 

누구나 이것이 4.0 및 아니오에서 작동하는 이유를 알고 있습니까? t 4.2?

+0

코드가 4.3에서 제대로 작동하는 것 같습니다. 장치 자체에서 파일 탐색기로 파일을 찾을 수 있습니까? – ThaMe90

+0

프로젝트를 위임 한 교수가 데이터 요금제를받지 못했고 Wi-Fi를 사용하더라도 데이터 연결없이 Google Play에 등록 할 수있는 방법을 찾지 못했습니다. 나는 거기에 아무것도 없다고 확신하지만, 나는 수동으로 다운로드 파일에 텍스트 파일을 넣었고 나는 리눅스와 윈도우 탐색기에서 MTPFS와 gmtp를 볼 수 있었다. – user1056153

+1

이것은 MTP 가시성 문제와 비슷합니다 (여기서는 다소 불완전 함). http://stackoverflow.com/questions/18292694/files-created-on-external-storage-do-not-show-up- 장치가 장착 된 상태 일 때 –

답변

0
/storage/emulated/0/Download/test.txt 

은 로그에 따르면, 텍스트 파일은 외부 저장 장치의 emulated 부분에 기록되고있다.

Android 4.2에서는 Google이 다중 사용자 지원을 추가했으며 외부 저장소를 가상화했습니다. 그것은 그것이 emulated라고 할 때 그것이 의미하는 것입니다.

그런데 교수가 제한된 사용자 계정을 만들지 않았는지 확인해야합니다. 데이터 요금제가 없어서도 Google Play에 등록하지 않아야합니다.

0

오늘 아침에 전화를 다시 시작하면 파일 시스템이 내가 만든 테스트 파일로 흩어졌습니다. 필자는 다른 새로운 파일을 작성하고 데스크탑에서 파일을 보려고 시도했지만 실제로는 파일을 다시 시작한 후에 만 ​​볼 수 있습니다. 에뮬레이션은 문제가 아닙니다. 안드로이드가 여러 사용자를 위해 드라이브를 공유하는 새로운 방식입니다. Windows에서 behvior를 다시 한번 확인해보고, Linux 드라이버가 아닌 버그를 확인합니다.