Android 설치된 어플 목록 PackageInfo를 통해 가져오기 및 다른 어플 실행

1. 설치된 어플 목록 PackageInfo 를 통해 가져오기
List appinfo = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);
for(int i = 0 ; i < appinfo.size() ; i ++){
PackageInfo pi = appinfo.get(i);
String appname = pi.packageName
}

2. 다른 어플 실행 시키기 (1)
ComponentName compname = new ComponentName(“패키지명”, “클래스명”);
Intent actintent = new Intent(Intent.ACTION_MAIN);
actintent.ADDcategory(Intent.CATEGORY_LAUNCHER);
actintent.setComponent(compname);
act.startActivity(actintent);

다른 어플 실행 시키기 (2)
Intent toLaunch = Util.getLaunchIntentForPackage(CommonDefine.packageName);
toLaunch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intentBack = PendingIntent.getActivity(aContext, 0, toLaunch, 0);

다른 어플 실행 시키기 (3)
PackageManager packagemanager = getPackageManager();
String packagename = (String)v.getTag();
try{
Intent intent = packagemanager.getLaunchIntentForPackage(packagename);
if(intent != null){
startActivity(intent);
}
}catch(ActivityNotFoundException e){
e.printStackTrace();
}

Andorid button에 selector 적용하기

drawable 폴더에 “btn_on.png”,”btn_off.png”,”icon_on_off.xml” 을 생성한다.

icon_on_off.xml 을 열어 아래 코드를 삽입한다.


android:drawable="@drawable/btn_on" />

android:drawable="@drawable/btn_on" />

android:drawable="@drawable/btn_on" />


※ 여기서 주의할 점 default 이미지 값은 맨 하단에 명시해야 정상적으로 작동된다는 점!!!!

3. ImageButton 을 사용하는 레이아웃 XML 파일을 열어서 아래와 같이 속성을 지정한다.

android:id="@+id/menu1"
android:background="#000000"
android:src="@drawable/menu_n1"
... >

※ 여기서 또 주의할 점 background에 #00000000을 넣어주지 않으면 안드로이드 기본 버튼 위에 이미지를 올린다는 점!!!!

Android Handler 와 CountDownTimer 사용 예

== Handler
1. 임의의 시간에 무엇을 처리하고 싶을 때
2. 일정한 주기를 반복적으로 수행할 때
3. 시계 또는 타이머 또는 애니메이션, 백그라운드 감시 작업
4. 주간에 멈춤 가능
간단 방법)
Handler h = new Handler(){
public void handleMessage(Message m){
//기능
h.sendEmptyMessageDelayed(메시지, 초);
}
};
h.sendEmptyMessage(0);

== CountDownTimer(인터페이스)
1. 주기적인 작업처리 할 때 사용
2. 중간에 멈추게 할 수 있음
간단 방법)
CountDownTimer cdt = new CountDownTimer(long l, logn l2){ // l : 총시간 , l2 : 카운트 주기
public void onTick(long m){
//주기적인으로 실행할 기능
}
public void onFinish(){
//끝날때 기능
}
}.start();

== 사용 예 ==

1. Handler

public class HandlerEx extends Activity{
TextView tv = null;
ProgressBar pb = null;
ProgressBar pb2 = null;

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

tv = (TextView)findViewById(R.id.text);
pb = (ProgressBar)findViewById(R.id.pb);
pb.setBackGroundColor(Color.BLUE);

pb2 = (ProgressBar)findViewById(R.id.pb2);

//빈페이지 보내기
h.sendEmptyMessage(0);
}

//Handler 객체 생서
Handler h = new Handler(){
int i = 1;

public void handleMessage(Message m){
pb.incrementProgressBar(10);
tv.setText(i * 10) + “%”);

if( i <= 10 ){
//1초 지연 시간을 두어 자신에게 다시 메시지를 보낸다.
h.sendEmptyMessageDelayed(0, 1000);
} else {
tv.setText(“완료”);
}

i ++;
}
};
}

2. CountDownTimer

public class CountDownTimerEx extends Activity{
TextView tv = null;
ProgressBar pb = null;
ProgressBar pb2 = null;

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

tv = (TextView)findViewById(R.id.text);
pb = (ProgressBar)findViewById(R.id.pb);
pb.setBackGroundColor(Color.BLUE);

pb2 = (ProgressBar)findViewById(R.id.pb2);

//CountDownTimer 를 이용한 방법
new CountDownTimer(1000 * 10, 1000){
int i = 1;

public void onTick(long m){
incrementBy();
}
public void onFinish(){
incrementBy();
tv.setText(“완료”);
}

public void incrementBy(){
tv.setText( i * 10 + “%”);
pb.incrementProgressBy(10);

i++;
}
}.start();
}
}

Android 설정 저장 프레프런스

프레프런스(Preference)란?
어플리케이션의 설정 정보를 영구적으로 XML파일로 저장하여 관리하는 도구다.
안드로이드에선 자체적으로 설정사항을 관리하는 XML과 클래스들을 가지고 있다.

1. 프레프런스 가져오기
프레프런스를 사용하려면 먼저 프레프런스 관련 파일을 가져와야 한다.

SharedPreferences getSharedPreferences(String name, int mode)
첫번째 인수 – 프레프런스를 저장할 XML파일의 이름
두번째 인수 – 읽기, 쓰기 관련 모드 지정
???? (? 0 : 읽기, 쓰기 가능? )
???? ( MODE_WORLD_READABLE :? 읽기 공유 )
???? ( MODE_WORDL_WRITEABLE : 쓰기 공유 )

프레프런스 읽기
int getInt (String key, int defValue)
String getString?(String key, int defValue)
boolean getBoolean?(String key, int defValue)
Float getFloat?(String key, int defValue)
Long getLong?(String key, int defValue)

key : 데이터의 이름을 지정
defValue : default 값을 설정

기본 타입으로 모든 메소드가 오버로딩 되어 있다.

2. 프레프런스 기록
프레프런스 에디터 가져오기
기록을 하는 경우에는 또 가져와야 하는 것이 있다.
먼저 읽기와 동일하게 프레프런스를 가져온 이후에 에디터를 가져와야 한다.
에디터는 프레프런스 클래스의 이너 클래스인 SharedPreferences.Editor가 제공한다.

Editor는 변경 사항을 모두 모아두었다가 한꺼번에 적용시키는 기능을 가지고 있다.

SharedPreferences 프레프런스 객체 = getSharedPreferences(“PreTest”, 0);
SharedPreferences.Editor 에디터 객체 = 프레프런스 객체.edit();

프레프런스 기록
SharedPreferences.Editor putInt(String key, int value)
SharedPreferences.Editor putBoolean(String key,?boolean value)
SharedPreferences.Editor putString (String key,?String value)
SharedPreferences.Editor putFloat(String key,?Float value)
SharedPreferences.Editor putLong(String key,?Long value)

해당 키 값 삭제
SharedPreferences.Editor remove(String key)

boolean commit()
put* 메소드들로 데이터를 넣었으면 commit를 실행 시켜야만 프레프런스로 저장이 된다.

Android 텍스트에 자동링크 속성 부여하기

autoLink 속성은 문자열에 포함된 링크를 자동으로

해석하여 링크로 표시하고 클릭 이벤트를 처리한다.

“|” 연산자로 묶어 여러가지 링크를 같이 지정할 수도 있다.

none : 링크를 지원하지 않는다.
email : 이메일 주소를 인식
map : 지도의 주소를 인식
web : 웹 주소를 인식
phone : 전화번호를 인식
all : 위의 모든 패턴을 인식

android:autoLink=”all”? 다음과 같이 사용하면 된다.

Android EditText를 이용한 비밀번호 입력 – PasswordTransformationMethod

안드로이드에서?PasswordTransformationMethod를 생성하여 간단하게

EditText에 입력되는 값을 비밀번호 입력같이 * 표시로 바꿀수 있다.

간단히 setTransformationMethod()를 호출해주면 된다.

EditText edit = (EditText)view.findVIewById(R.id.edit_box);
//숫자 키패드 설정
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
//password format 변경
PasswordTransformationMehod passwdfm = new PasswordTransformationMethod();
edit.setTransformationMethod(passwdfm);

Android GPS 두 점 사이 거리 구하는 방법

float [] distance = new float[2];???????
float result;???????????? //실제 거리를 담을 변수

Location.distanceBetween(lat1, lon1, lat2, lon2, distance);
//lat1, lon1은 첫번째 사용자, lat2, lon2는 두번째 사용자의 gps값
//distanceBetween은 Location클래스 내에서 정의된 static함수이기 때문에
//Location클래스를 통해 어디서든 호출할 수 있다.
//이 함수가 호출되고 나면 distance 배열의 첫번째 요수로 두지점의 거리가 할당된다.

result = distance[0];??? //두 점의 거리

Android GPS 사용하기

먼저 gps 를 사용하기 위해서는 Manifest 에
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”></uses-permission>
을 추가 해야 한다.

<소스 코드>
LocationManager locM = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

String provider = LocationManager.GPS_PROVIDER; //GPS_PROVIER로 설정

Location loc = locM.getLastKnownLocation(provider); //마지막으로 기억하는 위치를 설정한다.

//주소를 확인하기 위한 Geocoder KOREA와 KOREAN 둘다 가능
Geocoder geocoder = new Geocoder(this, Locale.KOREAN);
//GPS를 10초(1000 * 10) 마다 또는 10미터 이동시마다 위치값을 받아온다.
?locM.requestLocationUpdates(provider, 10000, 10, locListener);

//위 locListener? 변수의 final로 선언해 따로 빼낸 형태
private final LocationListener locListener = new LocationListener(){
?? @Override
?? public void onStatusChanged(String provider, int status, Bundle extras){
?? //GPS 상태 변화가 있을때 할 일
?? }

? @Override
???public void onProviderEnabled(String provider) {
? ? //?GPS?사용가능으로 바꼇을 때 할 일
?? ?}

?? @Override
?? public void onProviderDisabled(String provider) {
?? //GPS사용 불가능으로 바꼇을 때 할 일
?? }
??
?? @Override
?? public void onLocationChanged(Location location) {
?? // 바뀐 위치를 수신하였을 때 할 일
?? }
?};