Map setting

OsmandPlugin.onMapActivityResume(this);

getMyApplication().getDaynightHelper().onMapResume();

mapView.refreshMap(true);

 
settings.MAP_TILE_SOURCES.set(“GoogleMaps”);

// google 맵 정의

settings.MAP_ONLINE_DATA.set(true);

public final CommonPreference<Boolean> MAP_ONLINE_DATA = new BooleanPreference(“map_online_data”, false).makeGlobal();

MAP_ONLINE_DATA

mapLayers.updateMapSource(mapView, settings.MAP_TILE_SOURCES);

base map : google

android apk error

APK 를 생성하다 보니 이런 경고가 뜨면서 안됬다.

Export aborted because fatal lint errors were found. These are listed in the Lint View. Either fix these Before running Export again, or turn off “Run full error check when exporting app” in the Android > Lint Error Checking preference page

<해결 방법>

Eclipse  상단에 “window” -> “preferences” -> “Lint Error Checking” -> Run full error check when exporting app and abort if fatal errors are found” 체크 해제 하면 된다.

FLAG_ACTIVITY_CLEAR_TOP

 

FLAG_ACTIVITY_CLEAR_TOP

이 FLAG는 stack 에 남아 있어도 새로 activity를 생성시킨다.

그럼 당연히 새로 생성되길 기대하는 것이 상식적인 생각이다.

하지만

FlAG 이외의 특성때문에

상식밖의 동작을 할 수 있다.

 

A -> (B/A) 0> (A/B) -> B 를 만들기 위해

1. A -> B (FLAG_ACTIVITY_REORDER_TO_FRONT)

2.B -> A (flag 값이 default 이지만 xml 에서 launchMode 가 singleTop 일때 )

3.A -> B ( FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP)

 

당연히 B는 새로 생성되어야 한다.  (onCreate가 되어야 한다. )

그리고 이때 Sysem.exit(0); 을 하면 OnCreate 시킨다.

하지만 아직도 이해가 잘 안간다 조금더 연구해 봐야 겠다.

AdrnoidManifest 와 activity 간의 관계

Activity 생성시

Activity 속성에 LAUNCHER 속성을 주게 되면

<activity
android:name=”net.osmand.activites.Mainintro”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />

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

이러한 속성값이 부여된다.

이 속성은 어플리케이션의 메인화면으로 띄워질 Activity가 정의 됨으로 알아두자 .

이 Activity 속성보다 선행으로 실행되어야 하는 액션이 있기 마련인데

그럴때 사용하는것이

Application 속성이다.

<application
android:name=”net.osmand.activities.OsmandApplication”
android:debuggable=”true”
android:description=”@string/app_description”
android:icon=”@drawable/icon”>

이렇게 Application 속성을 하게 되면 Main LAUNCHER 속성보다 선행으로 실행되어

개발자가 만들고자 하는 프로그램을 더욱 부드럽게 만들어 주는 역할을 한다.

 

국가 언어 설정 가져오기

국가 언어 설정 가져오기

Locale systemLocale = getResources().getConfiguration().locale;

StringstrDisplayCountry=System.Locale.getDisplayCountry();

Syring strCountry = SystemLocale.getCountry();

String strLanguage = SystemLocale.getLanguage();

—–

String disp lang = Locale.getDefault().getDisplayLanguage();

값: 한국어

getDisplayLanguage 괄호 안 Locale 을 적어주면 그에 맞는 값을 리턴한다.

—-

String iso_lang = Locale.getDefault().getLanguage();

값 : ko

ISO-639 코드 2자리(소문자)를 리턴합니다.

—-

실 사용 예

Locale locale = getBaseContext().getResource().getComiguration().locale;

String lancode = locale.getLanguage();

if(lancode.equals(“ko”){

// 한국어

}

—-

** ISO-639

: 전 세계의 언어 명칭에 고유 부호를 부여하는 국제 표준

사용자 Dialog 만들기

Custom Dialog 만들기는 매우 쉽다.

Activity를 생성해서 Dialog 속성만 주면 되기 때문이다.
예를들어

AndroidMenifast에 “Call_driver_dialog” 라는 이름의 Activity 를 “Dialog” 속성으로 만들고 싶다면
AndroidMenifast에 이렇게 정의 해 주면 된다.

android:name=” 당신의 Activity 명”
android:label=” 당신의 Activity Label”
android:screenOrientation=”portrait” android:theme=”@android:style/Theme.Dialog” > 이렇게 간단히 Dialog를 만들수 있다.

그리고 한가지 더!
Dialog를 만들때 당신은 작은 창을 이쁘게 꾸몄을 것이다.
하지만 정작 핸드폰에 빌드해 보면 정말 볼품없고 어딘가 어색한게 영 마음에 들지 않을것이다. 그 이유는 주변 테두리의 조금씩 남아있는
이상한 배경색 때문인데 이배경색을 없애는 것 또한
어려운 일이 아니다.

Source )
this.reqyestwindowFeature(window.FEATURE_NO_TILE);
this.getWindow().setBackgroundDrawable(new color Drawable(Color.TRASPARENT));

속성을 넣어주게 되면 지저분하게 울긋 불긋 남았던 주변 선들이 깔끔히 정리 될 것이다.

Android xml string-array 값 가져오기

<string-array name=”language”>
???????? ?<item>JAVA</item>
????????? <item>C</item>
????????? <item>C++</item>
????????? <item>C#</item>
????????? <item>SCRIPT</item>
</string-array>

String []?language = getResources().getStringArray(R.array.nation_number);
for(int i = 0 ; i < language.length ; i++){
????? Log.i(“language [ " + i + " ] = ” +?language[i] );
}

Android animation 효과들

애니메이션 효과들

<이동>
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android
??? android:interpolator=”@android:anim/overshoot_interpolator”
??? >
?? <translate android:fromXDelta=”-100%”
????? android:toXDelta=”0″
????? android:duration=”1000″
????/>
</set>

<회전>
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android
??? android:interpolator=”@android:anim/overshoot_interpolator”
??? >
?? <rotate android:fromDegress=”0.0″
????? android:toDegress=”360″
????? android:pivotX=”0%”
????? android:pivotY=”50%”
?? />
</set>

<크기>
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android
??? android:interpolator=”@android:anim/overshoot_interpolator”
??? >
?? <scale android:fromXScale=”1″
????? android:toXScale=”1″
????? android:fromYScale=”0.1″
????? android:toYScale=”1.0″
????? android:duration=”500″
????? android:pivotX=”50%”
????? android:pivotY=”50%”
?? />
</set>

<알파>
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android
??? android:interpolator=”@android:anim/overshoot_interpolator”
??? >
?? <alpha android:fromAlpha=”0.0″
????? android:toAlpha=”1.0″
????? android:duration=”1000″
?? />
</set>

<혼합>
<?xml version=”1.0″ encoding=”utf-8″?>
<set xmlns:android=”http://schemas.android.com/apk/res/android
??? android:interpolator=”@android:anim/overshoot_interpolator”
??? >
??? <translate
??????? android:fromYDelta=”0″
??????? android:toYDelta=”100%”
??????? android:duration=”1000″
??????? />
??? <alpha
??????? android:fromAlpha=”1.0″
??????? android:toAlpha=”0.0″
??????? android:duration=”1000″
??????? />
</set>

Android GPS 로 좌표 가져오기

LocationManager locationM;
LocationListener locationL;

locationM = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location loc = locationM.getLsatKnownLocation(LocationManager.GPS_PROVIDER);

if(loc == null){
?? return null;
}

locationL = new LocationListener(){
?? @Override
??
public void onStatusChanged(String provider, int status, Bundle extras) {

?? }
???@Override
?? public void onProviderEnabled(String provider) {
?
?? }
?? @Override
?? public void onProviderDisabled(String provider) {
?
?? }
?? //위치 정보가 변경 됐을 때 위치 정보를 가져온다.
?? @Override
?? public void onLocationChanged(Location location) {
????? Log.i("HONEYMAP","Lat:"+location.getLatitude()+
????????????????? "Lng:"+location.getLongitude());
????? myLat = location.getLatitude()*1E6;
????? myLng = location.getLongitude()*1E6;
?? }
};
?
//gps로부터 위치 변경이 올 경우 업데이트 하도록 설정
locationM.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationL);
?
//가장 최근 위치를 저장
myLat = locationM.getLastKnownLocation(LocationManager.GPS_PROVIDER).
??????????? getLatitude()*1E6;
myLng = locationM.getLastKnownLocation(LocationManager.GPS_PROVIDER).
??????????? getLongitude()*1E6;
?
?

Android txt 파일 읽어 오기

public void onCreate(Bundle savedInstanceState){
?? super.onCreate(savedInstanceState);
???setContentView(R.layout.text_test);

?? EditText txt_test = (EditText)findViewById(R.id.et_1);

?? String?test_file = getStringFromAsset2(safe_join_provision.this, “test.txt”);
}

public static String getStringFromAsset2(Activity activity, String file){
?? String result =”";
?? AssetManager assetManager = activity.getAssets();
? ?InputStream is = null;
? ?try {
????? is = assetManager.open(file);
????? result = convertStreamToString2(is);
? ?} catch (Exception e) {
????? // TODO: handle exception
? ?} finally{
????? try {
???????? is.close();
????? } catch (Exception e2) {
???????? // TODO: handle exception
???? ?}
?? }
?? return result;
}

 

?public static String convertStreamToString2(InputStream is) {
?? ByteArrayOutputStream baos = new ByteArrayOutputStream();
?? BufferedReader br = null;
?? String temp = “”;
?? try {
???br = new BufferedReader(new InputStreamReader(is));
?? } catch (Exception e1) {
???? ?// TODO Auto-generated catch block
????? e1.printStackTrace();
?? }
?? try {
????? String tmp = “”;
???
????? while((tmp = br.readLine()) != null){
??????? ?temp += tmp+”\n”;
???? ?}
?? } catch (Exception e) {
???? ?// TODO: handle exception
? ?} finally{
???? ?try {
??????? ?if(br != null)
??????? ?br.close();
????? } catch (IOException e) {
????????? // TODO Auto-generated catch block
???????? e.printStackTrace();
????? }
?? }

?? return temp;
}