노무현 전 대통령 서거 추모글 남기기

동영상 녹화를 해봤다..


public void RecordVideo(string path)
    {
        mRecorder = new MediaRecorder();
        mRecorder.SetAudioSource(AudioSource.Mic);
        mRecorder.SetVideoSource(VideoSource.Camera);
        mRecorder.SetOutputFormat(OutputFormat.MPEG_4);
        mRecorder.SetAudioEncoder(AudioEncoder.AMR_NB);
        mRecorder.SetVideoEncoder(VideoEncoder.H264);
        mRecorder.SetProfile(CamcorderProfile.Get(CamcorderProfile.QUALITY_HIGH)));
mRecorder.SetOutputFile(path); mRecorder.SetMaxDuration (10000); mRecorder.Prepare(); try{ mRecorder.Start(); }catch( Exception ex) { ex.GetType (); } }

이런 식으로하면 에러가 난다..(Illegal State Exception)


mRecorder.SetProfile(CamcorderProfile.Get(CamcorderProfile.QUALITY_HIGH));

기본이 Low인가?? 해서 넣어봐도 에러가 난다..

mRecorder.SetProfile(CamcorderProfile.Get(CamcorderProfile.QUALITY_LOW));
mRecorder.SetProfile(CamcorderProfile.get(Camera.CameraInfo.CAMERA_FACING_FRONT, CamcorderProfile.QUALITY_LOW));

이부분에서 에러가 나기에 주석 처리해주면 동작한다..



그러나.. 화질이 엉망징창이다..


깍두기 형님들이 무더기로 인사한다.


저부분이 안돼니 이거라도 이것 저것 바꿔보자..

        mRecorder.SetOutputFormat(OutputFormat.MPEG_4);
        mRecorder.SetAudioEncoder(AudioEncoder.AMR_NB);
        mRecorder.SetVideoEncoder(VideoEncoder.H264);

그래봐야 별반 다를게 없다..


이것 저것 만지다보니 화질이 좋아졌다..


        //mRecorder.SetOutputFormat(OutputFormat.MPEG_4);
        //mRecorder.SetAudioEncoder(AudioEncoder.AMR_NB);
        //mRecorder.SetVideoEncoder(VideoEncoder.H264);
        mRecorder.SetProfile(CamcorderProfile.Get(CamcorderProfile.QUALITY_HIGH)));

주석으로 없애니 잘 동작한다.


CamcorderProfile.QUALITY_HIGH은 테스트 폰에서 1920* 1080 이였다..
mRecorder.SetProfile(CamcorderProfile.Get(CamcorderProfile.QUALITY_720P)));

결국 720p로 낙점..


mediaRecorder.setProfile 과 기타등등(mediaRecorder.setOutputFormat)은 같이쓰면 에러가 난다..

이유는 잘 모르겠다..


Format, Encoder로 화질을 좋게 할수는 없는 것인가??


화질이 너무구려 책보며 OpenGl을 끄적일까 했는데 일단은 여기까지..



Posted by Kelly Cook
,
soundpool을 과 MediaPlayer 비교:
기본적으로 둘 다 소리를 재생할 수 있다는 측면에서는 같지만,
MediaPlayer는 하나의 미디어 파일을 재생하는 용도로 주로 사용됩니다. 즉, 노래나 영화를 재생시키고 특정 위치로 seeking하고 pause하고 play하는 등의 플레이어를 구현해 놓은 것이라 보시면 됩니다.
SoundPool 은 mp3, ogg등으로 만들어진 리소스를 16bit PCM으로 디코딩해서 들고 있다가 재생하므로 CPU사용량을 줄이고, 여러개의 스트림을 로드해 두었다가 동시에 정해진 개수만큼 재생한다거나 하는 등의 관리 기능을 가지고 있습니다. 주로, 게임 등에서 폭발음, 클릭음 등을 로드해서 들고 있다가 재생하는 용도로 사용됩니다.

출처: http://www.androidpub.com/9707
Posted by Kelly Cook
,

http://www.imbc.com/broad/radio/minimbc/app/index.html

MBC mini Radio를 사용해 봤습니다. MBC 뉴스도 그렇고 MBC는 다른 방송사에 비해서 디자인이 알록달록 이쁘네요.방송도 잘 나오는 편입니다. 다만 친친 디제이가.. ㅠㅠ 태연의 친한친구 다시 들을 날이 빨리 왔으면 좋겠네요..


근데 종료시에 문제가좀 있네요..

종료하면 종료, 숨기기, 취소 팝업이 뜨고 종료를 누르면 종료가 되는데, 소리는 한 1초가량 후에 종료 됩니다.

뭐 그건 그렇다쳐도 종료 후에 계속 서버에 접속하는 것 같네요.. 방송은 아니고 선곡표 같은거 계속 접속하네요.

혹시나 해서 Wifi, 3G 끄니까 접속이 안된다는거 보니까 계속 서버에 접속하는 듯..

하여튼 백그라운드에 남아서 뭔가를 합니다. Wifi는 무료라지만 3G 무한 아니신 분들은 참고하세요.


전 넥서스 원 가지고 있는데 3G로 테스트하니 미세하게 전송량이 늘어나는 단점이 있네요..

그리고 가끔 걍 죽어버립니다. 디버그보면 뻘건글씨가.. 근데 디버그에 뭔 정보를 노출시키나요..

하여튼 원래 에러나면 팝업 생성되는데, 그거 걍 없애고 소리소문 없이 죽습니다.

MBC News 어플도 페이지 막 돌아다니다 보면 Bitmap size error 나서 죽던데, 이때도 팝업 없이 조용히..

하여튼 보이는 것은 깔끔하고 잘되는 것같은데, 안보이는 곳에 처리가 미숙한 점은 좀 아쉽습니다.

그래도 일반 사용자들에게는 최고의 프로그램이 나리까 합니다. 문제점이 사용하는데 크게 지장을 줄 정도도 아니고, 안들이드 폰으로 자기가 원하는 프로그램도 들을 수 있고..

Posted by Kelly Cook
,
출처: http://blog.naver.com/anwun?Redirect=Log&logNo=113823272

mm_MPTest
 

public class mm_MPTest extends Activity {

     MediaPlayer mPlayer;

 

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.mm_mptest);

 

          // 리소스 재생

          findViewById(R.id.btn1).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = MediaPlayer.create(mm_MPTest.this, R.raw.dingdong);

                   player.start();

              }

          });

 

          // 파일 재생

          findViewById(R.id.btn2).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = new MediaPlayer();

                   try {

                        player.setDataSource("/sdcard/eagle5.mp3");

                        player.prepare();

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_MPTest.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

 

          // 스트림 재생

          findViewById(R.id.btn3).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = new MediaPlayer();

                   try {

                        Uri uri = Uri.parse("http://www.winapi.co.kr/data/saemaul1.mp3");

                        player.setDataSource(mm_MPTest.this, uri);

                        player.prepare();

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_MPTest.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

 

          // 미리 준비된 객체로 재생

          mPlayer = MediaPlayer.create(this, R.raw.dingdong);

          findViewById(R.id.btn4).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   mPlayer.seekTo(0);

                   mPlayer.start();

              }

          });

 

          // 준비하지 않은 상태로 재생

          findViewById(R.id.btn5).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = new MediaPlayer();

                   try {

                        player.setDataSource("/sdcard/eagle5.mp3");

                        player.start();

                   } catch (Exception e) {

                        Toast.makeText(mm_MPTest.this, "error : " + e.getMessage(), 0).show();

                   }

              }

          });

 

          // 다른 파일 열기

          findViewById(R.id.btn6).setOnClickListener(new Button.OnClickListener() {

              public void onClick(View v) {

                   MediaPlayer player = MediaPlayer.create(mm_MPTest.this, R.raw.dingdong);

                   //player.reset();

                   try {

                        player.setDataSource("/sdcard/eagle5.mp3");

                        player.prepare();

                        player.start();

                   } catch (IllegalArgumentException e) {

                        Toast.makeText(mm_MPTest.this, "IllegalArgumentException", 0).show();

                   } catch (IllegalStateException e) {

                        Toast.makeText(mm_MPTest.this, "IllegalStateException", 0).show();

                   } catch (IOException e) {

                        Toast.makeText(mm_MPTest.this, "IOException", 0).show();

                   }

              }

          });

     }

 

     public void onDestroy() {

        super.onDestroy();

        if (mPlayer != null) {

          mPlayer.release();

          mPlayer = null;

        }

    }

}

Posted by Kelly Cook
,
remount 한다.
>adb remount

안드로이드에 있는 host 파일을 받는다.
>adb pull /system/etc/hosts D:\TDPlatform\android_home\backup\

hosts 파일 수정한다.
---------------------------------------
기본적으로 로컬만 등록되어 있음.
127.0.0.1      localhost
---------------------------------------

host 파일을 넣는다.
>adb push D:\TDPlatform\android_home\work\hosts /system/etc/


hosts 파일 수정 확인해보기

>adb -e shell
#cat /system/etc/hosts
Posted by Kelly Cook
,