카테고리 글 보관함: Android

[iFive Mini3 Retina] 2.0.9기반 FNF기반 앱/위젯 제거 펌웨어

안녕하세요. 이스트픽입니다.




http://pan.baidu.com/s/1sjvwcZN




현재 Mini3R의 최신 펌웨어는 2.1.1입니다만, 2.0.9를 베이스로 한 이유는…


2.1.0이후부터 epub파일이 일부 리더(리디북스, 네이버북스 등…)에서… 강제로 두쪽보기가 되어 버려서…


(네이버북스에서 두쪽보기하면 네쪽보기가 됩니다…) 



더불어, 클리앙등의 커뮤니티 앱의 본문도 깨알같이 나와서 쓰기 참 힘들었기 때문에 2.0.9기반으로 잡았습니다.


1. 첫 화면 수정도 못하게 만들어 놓은 FNF제 Launcher3기반 런쳐 제거


2. FNF기본 위젯 제거


3. FNF 날씨 앱 제거


4. FNF 날짜/시간 관련 앱 제거


5. 갤러리 -> Android 기본 갤러리로 변동


6. 카메라 -> Android 기본 카메라 앱으로 변동


7. 구글 프레임워크, 서비스 버전 최신으로…(기본/몇 안되지만 추가된 구글 앱들을 최신버전으로…)


8. 구글 나우 런쳐, 북스, 무비, 유투브 기본 설치(Gapps를 통째로 설치해 넣으려다가 system파티션 용량 문제로… 파티션을 건드릴까하다 패스했습니다.)


9. 잠금화면의 이미지 제거


10. 기본 언어를 한국어, 기본 시간대를 서울로.(하지만, 초기화 시에는 SetupWizard가 실행되도록 해 놓았기 때문에 별 의미 없을지도…)


11. 부팅 애니메이션을 넥서스5의 것으로(사실 아무거나 상관 없었습니다… 기본 부팅 화면이 너무 눈아프게 깜빡이는 바람에… 끄기에는 허전하고…)


12. OpenWnn(일본어 입력기), PinyinIME(중문평음입력기) 제거. 한글 키보드가 딱히 화면에 맞는게 없어서 높이 조절이 용이한 도돌 키보드를 추가해 놓았습니다.


* 첫 실행시, SetupWizard에서 조금 오래 걸릴 수 있습니다. 원래 언어 설정하는 월컴 스크린 후에 네트워크를 찾는 부분이 있는데,


이 부분을 그냥 수정 없이 썼더니 3G/LTE를 찾겠다고 발악을…. 그냥 쭉 기다리시면 Wifi설정화면으로 넘어갑니다.


* 그리고 설정도중 PicoTTS가 오류를 뿜을 텐데 무시해 주시기 바랍니다.


* 설치방법은 순정 펌웨어 리스토어 하듯, FNF에서 제공하는 RKDeviceManage를 이용하시면 됩니다.


* ART모드는 사용하지 않으시는게… 대충 넣었더니 Google서비스가 오류를 뿜습니다


* 카메라앱의 파노라마 기능은 동작하지 않습니다.(누르면 죽어버립니다.)



이걸로 넥서스 같은 기분을…은 무슨….




이걸 만든 이유는 락스크린 이미지가 거슬린다 + 중국계마켓(AnZhi마켓, FNF시장) 필요 없음 등 입니다




편하게 복원하려고 img파일로 만든김에 그냥 공개 하였습니다.


* 이 펌웨어를 사용함으로 발생하는 문제점에 대해서는 저는 절대 책임을 지지 않습니다.


 



 


 



 

ImageDownloader를 사용할때, statuscode가 302라 이미지 출력이 안될때…

그냥 이것도 저를 위한 메모입니다만, 혹시 저같이 초보인 다른 분들이 헤매실까봐 공개로 해 놓습니다.


NO_ASYNC_TASK일때는 상관 없는데(NO_ASYNC_TASK쓸일은 캐시때문이겠지만…), 


NO_DOWNLOADED_DRAWABLE이나 CORRET 사용시입니다.


페이스북api같이 프로필 사진등을 리다이렉션 해주는 주소로 줄때 이러한일이 발생하는데요.




ImageDownloader클래스의 Bitmap downloadBitmap(String url) 메서드를 수정해 주시면 됩니다.

    Bitmap downloadBitmap(String url) {
final int IO_BUFFER_SIZE = 4 * 1024;

// AndroidHttpClient is not allowed to be used from the main thread
final HttpClient client = (mode == Mode.NO_ASYNC_TASK) ? new DefaultHttpClient() :
AndroidHttpClient.newInstance(“Android”);
final HttpGet getRequest = new HttpGet(url);

try {
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 301 || statusCode == 302)
{
Header redirect = response.getFirstHeader(“Location”);
if (client instanceof AndroidHttpClient)
((AndroidHttpClient)client).close();
return downloadBitmap(redirect.getValue());
}
if (statusCode != HttpStatus.SC_OK) {
Log.w(“ImageDownloader”, “Error ” + statusCode +
” while retrieving bitmap from ” + url);
return null;
}

final HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = null;
try {
inputStream = entity.getContent();
// return BitmapFactory.decodeStream(inputStream);
// Bug on slow connections, fixed in future release.
return BitmapFactory.decodeStream(new FlushedInputStream(inputStream));
} finally {
if (inputStream != null) {
inputStream.close();
}
entity.consumeContent();
}
}
} catch (IOException e) {
getRequest.abort();
Log.w(LOG_TAG, “I/O error while retrieving bitmap from ” + url, e);
} catch (IllegalStateException e) {
getRequest.abort();
Log.w(LOG_TAG, “Incorrect URL: ” + url);
} catch (Exception e) {
getRequest.abort();
Log.w(LOG_TAG, “Error while retrieving bitmap from ” + url, e);
} finally {
if ((client instanceof AndroidHttpClient)) {
((AndroidHttpClient) client).close();
}
}
return null;
}


강조된 부분이 추가된 부분입니다. (Line 12 ~ 18)


 저도 잘 모르는지라, 질문하셔도 답은 못할 수 있습니다. 




참고 :




minSdkVersion에 따라 구글맵(맵뷰) 해상력 차이가 있군요.

저같이 SDK 버전별 API 변경사항따위 읽지 않으면 이렇게 되는구만요.

뭐 저같이 당황하시는 분들이 있을까봐…(없겠지만…) 메모 차원으로 남겨 놓습니다.

androidmanifest.xml 을 보면 아래 같은 항목이 있지요…

<uses-sdk android:minSdkVersion=”3″ />

하위 호환성 땜시 일부러 낮게 써 놓았는데(3이면 1.5고 4면 1.6이던가요…)

뿌연놈이 3으로 설정된 녀석… 빠릿한놈이 4로 설정된 녀석입니다. 참고로 줌팩터는 18로 동일하게 설정했습니다.

어디까지나 참고용으로…

요즘 개발하시는 분들은 뭐… 4아니면 5로 쓰시겠지만…