- Logcat이 죽어서, adb를 재실행하기
C:\adt-bundle-windows-x86_64-20140321\sdk\platform-tools 경로에서 커맨드창을 열고
adb kill-server // 종료
adb devices // 실행
- SimpleDateFormat 사용법
String timeStamp = new SimpleDateFormat("yyyyMMdd_HH:mm:ss.SSS").format(new Date());
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
- File 생성하기
http://arabiannight.tistory.com/47
- 경로 얻어오기
String externalPath = Environment.getExternalStorageDirectory()+ File.separator + "DCIM/Camera/test.jpg";
- 이클립스에서 새로 만들어 설치한 앱이 메뉴 아이콘에 안 뜰 때
<activity
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:name="com.sagamore.rd.activity.MainActivity"
android:configChanges="orientation|keyboard|screenSize"
android:screenOrientation="sensorLandscape"
android:launchMode="singleTop">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 액티비티 flag
액티비티를 1개만 생성한다 -> 싱글태스크 or 싱글 인스턴스(차이는 새로 실행한 액티비티를 따로 스택에 쌓을지, 내위에 쌓을지)
액티비티를 여러개 생성한다 -> 싱글 탑 or 클리어 탑
http://darksilber.tistory.com/entry/ACTIVITY-FLAG-%EC%86%8D%EC%84%B1
- 패키지 명으로 intent 를 주어 앱 실행하기
Intent intent = getPackageManager().getLaunchIntentForPackage( " 패키지 이름" );
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(intent);
(참고로 설치된 앱의 패키지명을 알고 싶으면, 구글 스토어에서 package name viewer를 쓰면됨)
http://www.androidside.com/bbs/board.php?bo_table=b49&wr_id=84833
- 레이아웃에서 percentage 사용하기
LinearLayout 안에 있는 View에서, layout_width = 0 dp로두고, layout_weight = ".50" 이렇게하면 width에 대해 절반의 비율을 할당함.
단, height와 width에대해 동시에 weight를 줄 수는 없다. (0 dp로 된 쪽에만 웨이트가 적용되고, 0dp는 한군데만 있어야함)
weight_sum을 지정해야 제대로 될 때도 있다.
http://www.androidpub.com/1507297
- ScrollView 사용시 주의사항
반드시 fillViewPort="true"로 지정해주어야 일반적으로 원하는 결과가 나온다
http://arabiannight.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9CAndroid-%EC%8A%A4%ED%81%AC%EB%A1%A4%EB%B7%B0ScrollView-%EC%82%AC%EC%9A%A9%EB%B2%95
또한 스크롤 뷰 안에서 리스트뷰를 사용하면 리스트뷰의 스크롤이 안되는데,
http://88oy.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-ScrollView%EC%95%88%EC%97%90-ListView-%EC%8A%A4%ED%81%AC%EB%A1%A4%ED%95%98%EA%B8%B0
를 따라하면 된다
- 레이아웃 파라미터 사용하기
이걸 사용하면 xml없이 레이아웃 및 View를 만들어서 사용가능하다.(setContents가 불가능할 때 유용함.)
http://tjandroid.blogspot.kr/2011/06/setlayoutparams.html
- 카메라 Preview 없이 찍기
아래 빈 SurfaceView를 만들어주는 것으로 매우 간단하지만, 아쉽게 안되는 기종이 많이 있다. 구글 글래스는 안된다.
http://cell0907.blogspot.kr/2014/01/android-camera-capture-without.html
http://handycodeworks.com/?p=19
아래 방법은 SurfaceView를 매우 작은 사이즈로 만들어주는것. 그러나 예시처럼 0dip는 안되고 1dip는 된다.
http://www.41post.com/3794/programming/android-take-a-picture-without-displaying-a-preview
그래서 결국 Service를 이용해 백그라운드로 촬영하는 방식을 사용하였다.
- 구글 글래스 Video 촬영
permission에 주의.. permission 에러가 안뜨고 전혀 연관성이 없는 에러가 떠서 발견하기 매우 힘들다.
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature android:name="android.hardware.microphone"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_VIDEO"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
또한..
https://code.google.com/p/google-glass-api/issues/detail?id=578
이글의 맨 아래 댓글 처럼
recorder.setCamera(camera);
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_720P));
recorder.setOutputFile(videoFile);
recorder.setPreviewDisplay(surfaceHolder.getSurface());
반드시 setProfile을 사용해야한다... 구글 글래스에서 지원하는 포멧에 맞게 촬영해야만 start failed : -19에러가 뜨지 않는다...
또한...
http://stackoverflow.com/questions/25038828/mediarecorder-not-working-anymore-on-new-google-glass-firmware-xe19-1-media-se
이글의 맨아래 댓글 처럼
Camera.Parameters params = mCamera.getParameters();
params.setRecordingHint(true);
mCamera.setParameters(params);
setRecordingHint를 사용해야만 media server died라는 에러가 뜨지 않는다...
정말 구글 글래스 비디오 촬영은 개발하기가 까다롭다.
따라서 완성한 구글 글래스에서 background로 비디오 촬영 혹은 사진 촬영(3초에 한번)을 해주는 소스를 공개한다.
http://developer.android.com/reference/android/media/MediaPlayer.html
http://developer.android.com/guide/topics/media/camera.html
http://blog.naver.com/PostView.nhn?blogId=windheim&logNo=90103064530
----
apk 파일 리버싱, 디컴파일
dex2jar 를 이용해서 jar로 바꾼다음, 뷰어로 보면서 리버싱.
http://blog.naver.com/PostView.nhn?blogId=man8408&logNo=110111707630
'Development > Free Topic' 카테고리의 다른 글
안드로이드 Thread 사용하기 (0) | 2014.10.05 |
---|---|
RESTFUL API (0) | 2014.07.22 |
Java, 클래스간 변수 공유 (0) | 2014.06.19 |
안드로이드 DB, SQLite (0) | 2014.06.19 |
Excel, Spread Sheet(google), VBA (0) | 2014.06.17 |
댓글