2014. 11. 20. 13:23

출처 : http://raidparty.net/xe/index.php?mid=android_tech&document_srl=1200&listStyle=viewer#viewSource

 

 

NotificationManager mangager = (NotificationManager)getSystemService( Context.NOTIFICATION_SERVICE ) ;

 

// 상태바에 표시될 아이콘, Notification이 뜰 때 상태바에 표시될 제목, 확장상태바의 알림을 시간순으로 정렬

Notification notification = new Notification( R.drawable.a, "알림", System.currentTimeMillis( ) ) ;

 

Context context = getApplicationContext( ) ;

Intent it = new Intent( this, noti.class ) ;

 

// 이동될 액티비티

PendingIntent launchIntent = PendingIntent.getActivity( context, 0, it, 0 ) ;

 

// context, 확장 상태바에 표시될 제목, 내용

notification.setLatestEventInfo(context, "알림제목", "알림내용", launchIntent ) ;

// Notification의 아이디

mangager.notify( 1, notification ) ;

 

 

 

실행되는 액티비티에 다음 코드를 작성하면 노티 작동이 멈춤

NotificationManager mangager = (NotificationManager)getSystemService( Context.NOTIFICATION_SERVICE ) ;

mangager.cancel( 1 ) ;  // 정지할 Notification의 아이디 

 

Notification에 알림음 넣기

1. 기본 알림음 넣기

notification.defaults = (Notification.DEFAULT_SOUND ) ;

 

2. 커스텀 알림음 넣기

Uri ringUri = Uri.fromFile( new File( "음악파일경로" ) ) ;

notification.sound = ringUri ;

 

 

Notification에 진동(vibrate) 넣기

1. 기본 진동(vibrate) 넣기

notification.defaults = ( Notification.DEFAULT_VIBRATE) ;

 

2. 커스텀 진동(vibrate) 넣기

notification.vibrate = new long[ ]{ 1000, 1000, 1000, 1000, 1000 } ;

( 순서대로 대기시간, 진동시간, 대기시간, 진동시간 이런 식으로 반복이다.) 

 

 

# 기본 알림음과 기본 진동을 같이 사용하고 싶으면 

    notification.defaults = (Notification.DEFAULT_SOUND  Notification.DEFAULT_VIBRATE)  ;

 

# 사용자가 확인할때까지 무한 반복하고 싶으면 

   notification.flags = Notification.FLAG_INSISTENT ;

 

붗빛 깜박이기

notification.ledARGB = Color.RED ;

notification.ledOffMS = 0 ;

notification.ledOnMS = 1 ;

notification.flags = Notification.FLAG_SHOW_LIGHTS;

Posted by 작은0악마
2014. 7. 8. 12:07

작업을 진행하던 중

 

안드로이드 webview와 폰 자체에 기본적으로 내장되어 있는 브라우저를 구분해야 할 일이 생겼다.

 

기본적으로 오는 user agent 값을 가지고 비교를 해보았으나

 

별다른 방법이 없어 보이는데...

 

그래서 확인한 방법이 ....

 

Android의 WebSettings를 확인해 보았다..

 

거기에 setUserAgentString 메소드가 존재...

 

혹시나...

 

여기에 임의의 값을 집어 넣고 테스트...

 

HTTP_USER_AGENT 의 값을 찍어보니

 

webview에서 호출할때는 위에 넣은 임의의 값이 출력된다..

 

이것을 이용하면 webview에서 호출한 것인지 여부를 판단할 수 있을 것 같다.

 

단, setUserAgentString 메소드에 임의의 값을 넣으면 그 값만이 나오기 때문에

 

javascript나 css에서 브라우저를 구분하려 한다면 이에 대한 보완이 필요하다.

 

그래서 처리한 방법...

 

1. WebSettings의 getUserAgentString 메소드를 이용해서 user agent 값을 가져옴.

2. 1에서 가져온 값에 임의의 값을 추가

3. setUserAgentString 메소드에 임의의 값을 추가한 문자열을 입력.

 

위와 같이 해서 해결함.

 

 

 

 

 

 

 

 

 

'Android' 카테고리의 다른 글

Android 푸시  (0) 2014.11.20
webView에서 javascript함수 호출시 에러  (0) 2014.06.26
GCM 작업을 하다가...  (0) 2014.06.05
mp3파일의 재생속도를 조절하는데 성공!!!  (0) 2014.01.02
전화번호 가져오기  (0) 2013.12.27
Posted by 작은0악마
2014. 6. 26. 16:17

안드로이드 webview와 javascript 함수간의 통신을 하는데

 

javascript에서 webview로 데이터를 전달하는것은 무리가 없다.

 

그런데 webview에서 javascript 함수를 호출하니 아래와 같은 에러가 발생

 

"Uncaught Error: Error calling method on NPObject.:41"

 

이는 별도의 Thread로 돌리면 해결된다.

 

그래서 아무 생각없이 Thread를 상속받아 만들어 돌려봤으나 앱이 죽는다..

 

헉...

 

webview의 메소드는 UI Thead에서 돌려야 한다는것을 잊고 있었다...

 

결국

 

runOnUiThread(new Runnable() {
    
    @Override
    public void run() {
     // TODO Auto-generated method stub
        //여기에 필요한 코드 작성          

    }
   });

 

로 해야한다.

'Android' 카테고리의 다른 글

Android 푸시  (0) 2014.11.20
android webview 와 기본 내장 브라우저 구별법  (0) 2014.07.08
GCM 작업을 하다가...  (0) 2014.06.05
mp3파일의 재생속도를 조절하는데 성공!!!  (0) 2014.01.02
전화번호 가져오기  (0) 2013.12.27
Posted by 작은0악마
2014. 6. 5. 11:06

그동안 GCM 작업을 할때는

 

항상 gcm.jar를 사용해왔다.

 

그러나 이는 deprecated 되었다고 나오며

 

google play service를 이용하는 방법을 권장한다..

 

그래서 이를 써보기로 했는데....

 

반나절 이상을 해본 결과...

 

장비에 설치 google play의 버젼과 장비의 구글 계정 연동 여부등등...

 

영향을 받아 현재 사용하는 테스트 폰에서는 정상 동작하지 않아 테스트가 불가능....ㅜㅜ

 

결국 열받아서...

 

다시 gcm.jar를 사용하기로 하였다...

 

 

혹시나 google play service를 이용해서 작업을 하실 분들은

 

아래 글을 참고하시면 좋을것 같다.

 

http://www.androidpub.com/2508286

 

어째 갈수록 구글이 개방에서 폐쇄로 가는거 같네....ㅡㅡ^

 

 

Posted by 작은0악마
2014. 1. 2. 15:02

업무일 기준으로 7일 이상 골치를 썩던 문제를 해결하였다...


그동안 구글의 각종 문서를 살펴보고

NDK관련 서적을 사서 테스트를 해보았다...


openSL es 를 가지고 해보려 하였으나

ICS부터는 uriPlayer에서는 playback rate가 동작하지 않는다는 비보....ㅜㅜ


결국 openMax AL에 관한 자료까지 찾다가 얻은 해답은

mp3 파일을 decoding 해서 사용하는 방법뿐이 없을것 같다는 것...


openSL을 이용하여 decording하는 방법

openMax 와 openSL을 이용하는 방법

LGPL Licence인 jLayer를 이용하는 방법 등등...


그러던 중 android의 MediaCodec에 대해서 알게되었고

그 자료를 찾던중 아래의 글을 발견하였다.

http://ekwang.tistory.com/57


단, 위에 방법은 android의 MediaCodec을 쓰는 것인데

이는 API 16부터 지원하기 때문에 그 아래 버전에서는 사용이 불가하다.


다행이 내가 하는 프로젝트는 min version이 API 16 이라서 사용이 가능했다.


위의 소스를 바로 적용하였더니 내 경우에는 오류가 좀 발생하여 이를 수정하였고

위에 소스에는 없는 재생 속도를 조절하는 부분을 추가하였다


http://www.basic4ppc.com/android/forum/threads/audiotrack.14007/ 를 참조함


현재 갤2에서 약 5초짜리 mp3로만 테스트를 하였으며

재생 완료 후의 callback 처리 부분을 작업중이다.


실제 정상적인 길이의 음악파일에서의 테스트도 남았고...

또한 API 16 이하 버전에서의 지원까지 고려한다면

결국 openSL es나 openMax AL을 이용하여야겠지만

ndk를 잘 모르는 현재로써는 더 많은 시간을 투자해야 할 것 같다....



그리고

좋은 정보를 올려주신 ekwang님과 Steve님께 다시 한번 감사 인사를 드립니다.

ekwang님, Steve님 감사합니다.^^



'Android' 카테고리의 다른 글

android webview 와 기본 내장 브라우저 구별법  (0) 2014.07.08
webView에서 javascript함수 호출시 에러  (0) 2014.06.26
GCM 작업을 하다가...  (0) 2014.06.05
전화번호 가져오기  (0) 2013.12.27
Can't open file for reading  (0) 2013.12.23
Posted by 작은0악마
2013. 12. 27. 14:43

TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

String num = tm.getLine1Number();


위와 같이 하면 전화번호를 반환한다.


그런데 반환하는 값은 통신사별로 차이가 있다.

LG나SK는 01012345678 과 같이 반환하는 반면에

KT의 경우는 +821012345678 과 같이 국가번호까지 반환한다.


전화번호를 구해서 숫자로 변환하여 처리하는 과정에서

KT폰만 다운되기에 Log를 확인했더니 '+' 문자때문에

변환과정에서 Exception이 발생하였다.


또한 USIM카드의 영향을 받는다는 글을 봤었는데

이에 대한것은 아직 자세히는 모르겠으나

실제 WIFI 전용장비나 USIM카드가 없는 장비에서는

전화번호가 NULL이 반환되었다.

Posted by 작은0악마
2013. 12. 23. 15:48

현재 진행중인 프로젝트....

 

삼성폰에서는 테스트를 마쳤고 큰 문제가 현재까지는 보이지 않는다...

 

그런데...LG폰에서 테스트를 하려고 하니....

 

앱을 실행하자마자 Logcat에 "Can't open file for reading" 라는 에러가 항상 2줄이 나온다...

 

다른 Exception도 나오지 않는다...

 

그렇다고 앱이 죽지도 않는다...

 

아놔...왜??

 

sqlite db외에는 읽는 파일이 없는데...

 

오히려 XML파일을 만들기만 하는데....

 

뭔 open 에러냐고....ㅜㅜ

 

6시간째 구글링을 하는데....대책이 없네...

 

 

혹시 저와 같은 경험 해보신분 계신가요???

Posted by 작은0악마