/system/framework/framework-res.apk


apktool 을 이용해서 풀면

리소스들이 똵!!



저작자 표시 비영리 변경 금지
신고
Posted by 바나나쥬스
Convert to Dalvik format failed : Unabled to execute dex : null

위에러를 내고 eclipse가 out of memory 에러를 내기 마련..
메모리 사이즈를 늘려준다 
eclipse.ini 파일에 사이즈 늘려줌..

-Xms256m
-Xmx1024m

늘려줘도 에러나네 어? 얼마나 늘려줘야 에러 안나주겠니?? -_-ㅋ 



저작자 표시 비영리 변경 금지
신고
Posted by 바나나쥬스
기본적으로 android 에서 dialog 를 만들어 띄우면 다음과 같은 모습니다



여기서 dialog 의 기본 ui 인 title이라던가 하얀 테두리 같은것을 쓰고싶지 않을때 
초간단하게 다음과 같이 하면된다 -_-;;

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));


이건 머..
너무 케간단해서 글로 올리기가 민망하구먼;;

저작자 표시 비영리 변경 금지
신고
Posted by 바나나쥬스

*그냥 튜토리얼 설명 간단하게 옮겨놓은 수준의 포스팅임;

Google API 를 쓸려면 sdk 에 Google API 가 있는 버전을 써야하고..
maps 쪽 api쓰려면 AndroidManifest.xml 의 <application> element  안에 다음을 써준다

<uses-library android:name="com.google.android.maps" />

그리고.. 머.. MapActivity 상속받고.. MapView쓰고 하면된다..
문제는 MapView를 정의할때 apiKey를 정해 주어야 한다

<com.google.android.maps.MapView
       
android:id="@+id/mapview"
       
android:layout_width="fill_parent"
       
android:layout_height="fill_parent"
       
android:clickable="true"
       
android:apiKey="Your Maps API Key"
/>

apiKey는 얻어와야 하는데 아래 사이트에서 만들어 준다
http://code.google.com/android/maps-api-signup.html

터미널을 띄어서 다음 명령을 친후 나오는 값을 위 사이트에 넣어주면 apiKey를 만들어 주는데
그런 유효환 key를 넣어줘야 MapView에 지도가 나타난다

$ keytool -list -keystore ~/.android/debug.keystore
...
Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98

keytool은 java sdk설치하면 있는거..
debug.keystore 는 대부분 home directory/.android/ 아래에 있다.

이거 무시해서 했다가 지도 안나와서 식겁했네 ㅋㅋㅋ
튜토리얼 문서 잘 읽고 따라합시다 -_- 아놔 영어로 되어있으니 설명은 안읽고 코드부분만 대강 보다보니;;;
저작자 표시 비영리 변경 금지
신고
Posted by 바나나쥬스

* MediaScannerConnection 이용

private MediaScannerConnectionClient client = new MediaScannerConnectionClient(){
        public void onMediaScannerConnected() {
            mediaScanner.scanFile(path, mimetype);
        }

        public void onScanCompleted(String path, Uri uri) {
mediaScanner.disconnect();
        }
};

MediaScannerConnection mediaScanner = new MediaScannerConnection(context.getApplicationContext(), client);
mediaScanner.connect();

이건 원하는 파일을 scanning 할 수 있다.
그리고 MediaScannerConnection 의 첫번째 인자로 Context가 들어가는데 ApplicationContext를 넣어줘야 connect가 되더라;
이거때문에 삽질;;

기존의 content가 삭제된 경우는 scan한다고 해서 기존의 content가 db에서 제거되지 않기때문에
content uri를 얻어와서 provider를 통해 직접 delete를 호출해 줘야 한다.
(scan한다음 넘어오는 uri 사용, scan 안한다면 where문 잘써서 query 날려~)

* 구찮으니 통째로 Scanning!!

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

media mount action을 새로 보내버리는 것이다.
그럼 다시 scanning을 하기때문에 파일을 이동시킨경우 삭제된 것 까지 처리가 쉽게 되버린다~
하지만 비효율적이니;


이를 수행하고 나면 아래와 같은 log를 볼수 있다.

D/MediaScannerService(  181): start scanning volume external
D/MediaScanner(  181):     scan time: 111ms
D/MediaScanner(  181): postscan time: 59ms
D/MediaScanner(  181):    total time: 687ms
D/MediaScannerService(  181): done scanning volume external


통째로 scanning하는 하는 방법은 비추이다

kitkat부터는 security가 강화되었는데 Intent.ACTION_MEDIA_MOUNTED 는 system 이 보내는 broadcast이므로 사용자가 보내면 FC가 발생한다.

쓰지맙시다!!


저작자 표시 비영리 변경 금지
신고
Posted by 바나나쥬스