마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

외부저장소 파일경로문제

0 추천
package jskim.lauraguide;

import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import geoservice.blackpoint.MouseMode;
import geoservice.blackpoint.XrMap;
import geoservice.blackpoint.base.CoordMapper;
import geoservice.blackpoint.base.MBR;
import geoservice.blackpoint.managers.LayerManager;
import geoservice.blackpoint.view.layers.ShapeLayer;

public class MapLoadThread extends Thread {
 private XrMap map = null;
 
 public MapLoadThread(XrMap map) {
  this.map = map;
 }
 
 public void run() {

  map.setMouseMode(MouseMode.NoneMode);
  
  LayerManager layerMan = map.getLayerManager();
  
  String ess = Environment.getExternalStorageState();
  String sdCardPath = null;
  
  if(ess.equals(Environment.MEDIA_MOUNTED)){
   sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
  }
  else {
   sdCardPath = Environment.MEDIA_UNMOUNTED;
   
  }
  
  String rootDir = sdCardPath + "/mapdata/samples";
  ShapeLayer lyr = new ShapeLayer("도로", rootDir + "/roads.shp");
  layerMan.addLayer(lyr);
  
  map.setMouseMode(MouseMode.MapViewMode);
  handler.sendEmptyMessage(0);
  
 }
 
 private Handler handler = new Handler() {
  public void handleMessage(Message msg) {
   CoordMapper coordMapper = map.getCoordMapper();
   LayerManager layerMan = map.getLayerManager();
   MBR mbr = layerMan.getMBR();
   coordMapper.zoomByMBR(mbr);
   map.update();
  }
 };

}

현재 Blackpoint GIS엔진을 이용하여 GIS 앱을 개발중에 있습니다.

헌데 파일경로를 못읽는지 자꾸 에러가 뜨네요...

자꾸 중지되었습니다.. 라고 뜨는데..

스레드를 메인 엑티비티와 병행에서 띄우는 부분에 있는건지..

아니면 파일불러오는 부분에서 문제가 있는건지 알 수 없네요..

파일은 지정된 위치에 저장을 시켜놓았고요...

CatLog를 확인했을 경우에는 Environment에서 root값이 null 값이라고만 떠서 파일경로 문제겠거니 하고 있거든요..

이거 어떻게 처리해야 하나요?

참고로 기종은 갤럭시 노트2 입니다만.. 다른 기종에서도 변함없이 돌아가게 하려면 어떻게 해야 하나요?

 

혹시 파일을 res에 저장해서 참고하는 형식으로 가면 문제가 해결될까요???

 

킁킁이12332 (140 포인트) 님이 2014년 1월 10일 질문
혹시몰라서 메인엑티비티도 달아봅니다...
책에 있는 그대로 한건데..
로그를 봐도 루트를 찾을수가 없다고 나온걸로봐서..
경로문제인걸까요???
package jskim.lauraguide;

import geoservice.blackpoint.XrMap;
import geoservice.blackpoint.events.MapEvent;
import geoservice.blackpoint.events.OnMapReadyEventListener;
import android.os.Bundle;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.Menu;


public class MainActivity extends Activity implements OnMapReadyEventListener {
   
    private XrMap map = null;
    private MapLoadThread dataLoadThread = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        map = (XrMap)findViewById(R.id.map);
       
        DisplayMetrics outMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
        int DPI = outMetrics.densityDpi;
        map.setDPI(DPI);
       
        map.setOnMapReadyListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onMapReady(MapEvent event) {
        // TODO Auto-generated method stub
        dataLoadThread = new MapLoadThread(map);
        dataLoadThread.start();
       
    }
   
    @Override
    public void onDestroy() {
        super.onDestroy();
        map.release();
        System.gc();
    }

}

1개의 답변

0 추천
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

퍼미션은 주신건가요?
철수야안녕 (6,120 포인트) 님이 2014년 1월 10일 답변
permission read를 안주고  write만 주었는데 혹시 몰라서 read를 주고 해봤는데 안되더라고요...
혹시 몰라서 manifest 첨부해드리겠습니다...

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jskim.lauraguide"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="jskim.lauraguide.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
...