마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MediaPlayer URL에 URLEncoder를통해 한글인코딩해서 실행시키는건데요 ㅠㅠ 도움좀요

0 추천
package com.example.ise_app.speedListening;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.example.ise_app.R;

public class Listening01 extends Activity {

	// String a = URLEncoder.encode("UTF-8");
	// String myUrl = "http://www.ise.kr/OldData/live/20051101-001_Tom.mp3";

	// String AUDIO_URL00 = URLEncoder.encode(replaceString, "EUC-KR");

	//String AUDIO_URL00 = "http://www.ise.kr/OldData/live/20051101-001_Tom.mp3";

	private MediaPlayer mp; // 미디어 플레이어 변수 선언
	private int pausePosition;
	private Button startBtn, pauseBtn, restartBtn, releaseBtn;
	private Button answer01, answer02, answer03, answer04;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_listening);
	

		// 시작
		startBtn = (Button) findViewById(R.id.startBtn);
		startBtn.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {

				try {
					String han = "http://www.ise.kr/OldData/live/20051101-001";
					String han1=" Tom의 행동";
					
					//String toUtf_8 = new String(han1.getBytes(), "utf-8");
					String encod = URLEncoder.encode(han1, "EUC-KR");
					String url = han+han1+".mp3";
					Log.i("URL : ", url);
					
					mp = new MediaPlayer();					
					//playAudio(url);
					
					mp.reset();
					
					try {
						mp.setDataSource(url);
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
					try {
						mp.prepare();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
					mp.start();
					
					Toast.makeText(getApplicationContext(), url,
							Toast.LENGTH_SHORT).show();

				} catch (Exception e) {
					e.printStackTrace();
				}

				buttonEnabled(true, 1);

			}

		});

		// 일시정지
		pauseBtn = (Button) findViewById(R.id.pauseBtn);
		pauseBtn.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {

				pausePosition = mp.getCurrentPosition();
				mp.pause();

				buttonEnabled(true, 2);

			}
		});
		// 재시작
		restartBtn = (Button) findViewById(R.id.restartBtn);
		restartBtn.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub

				mp.start();
				buttonEnabled(true, 3);
			}
		});
		// 정지
		releaseBtn = (Button) findViewById(R.id.releaseBtn);
		releaseBtn.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				mp.release();
				buttonEnabled(false, 0);
			}
		});

		buttonEnabled(false, 0);

		// /////////////////////////////////////////////////////////
		// /////////////////////////////////////////////////////////
		answer01 = (Button) findViewById(R.id.answer01);
		answer02 = (Button) findViewById(R.id.answer02);
		answer03 = (Button) findViewById(R.id.answer03);
		answer04 = (Button) findViewById(R.id.answer04);

		// 1번문제 정답 버튼 클릭 이벤트 처리
		answer01.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Log.i("MyTag", answer01.getText().toString());
				Toast toast = Toast.makeText(getApplicationContext(), "오답입니다.",
						Toast.LENGTH_LONG);
				toast.show();

			}
		});
		answer02.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Log.i("MyTag", answer02.getText().toString());
				Toast toast = Toast.makeText(getApplicationContext(), "오답입니다.",
						Toast.LENGTH_LONG);
				toast.show();

			}
		});

		answer03.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				Log.i("MyTag", answer03.getText().toString());
				Toast toast = Toast.makeText(getApplicationContext(), "정답입니다.",
						Toast.LENGTH_LONG);
				toast.show();
				// Handler 를 통해 Intent 넘어가는 시간 조절
				Handler hd = new Handler();
				hd.postDelayed(new Runnable() {

					@Override
					public void run() {
						// TODO Auto-generated method stub
						Intent intent = new Intent(Listening01.this,
								SpeedListening.class);
						startActivity(intent);
						finish();
					}
				}, 2500);

			}
		});

		answer04.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Log.i("MyTag", answer04.getText().toString());
				Toast toast = Toast.makeText(getApplicationContext(), "오답입니다.",
						Toast.LENGTH_LONG);
				toast.show();
			}
		}); //

	} // end onCreate

	public void buttonEnabled(boolean result, int i) {
		if (i == 0) {
			startBtn.setEnabled(!result);
			pauseBtn.setEnabled(result);
			restartBtn.setEnabled(result);
			releaseBtn.setEnabled(result);
		}
		if (i == 1) {
			startBtn.setEnabled(!result);
			pauseBtn.setEnabled(result);
			restartBtn.setEnabled(!result);
			releaseBtn.setEnabled(result);
		}
		if (i == 2) {
			startBtn.setEnabled(!result);
			pauseBtn.setEnabled(!result);
			restartBtn.setEnabled(result);
			releaseBtn.setEnabled(result);
		}
		if (i == 3) {
			startBtn.setEnabled(!result);
			pauseBtn.setEnabled(result);
			restartBtn.setEnabled(!result);
			releaseBtn.setEnabled(result);
		}

	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();

		if (mp != null) {
			mp.release();
			mp = null;
		}
	}

//	private void playAudio(String url) throws Exception {
//		killMediaPlayer();
//
//		mp = new MediaPlayer();
//		mp.setDataSource(url);
//		mp.prepareAsync();
//		mp.start();
//	}

	private void killMediaPlayer() {
		if (mp != null) {
			try {
				mp.release();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

} // end class

Mp3파일이 한글로되어있는 URL을 가져와서 쓰는건데요... 

46 ~ 51번째에서 URLEncoder를통해서 한글인코딩?을 했습니다 ㅠㅠ

데이터베이스에서 한글을 영타로 고쳤을때는 아무 문제없이 음원이 실행이 되는데 

한글로 실행을 시키면

이런식의 에러가 발생되네요 start called in state 0 도대체 뭔가요 ㅠㅠ 어디서 잘못된건지...

3일동안 이것때문에 골머리썩이고있습니다 ㅎㅎ... 도움좀부탁드릴게요 고수님들 ㅠㅠ

tlstjddls123 (160 포인트) 님이 2014년 1월 8일 질문

1개의 답변

0 추천

encoding 을 한다는 의미는 encoding 한 정보를 전달하는 것입니다.

현재는 ended 에 넣고 그 데이터는 버리고 있는 코드 군요

코딩에 대한 기본을 먼저 숙지 해야할 것 같습니다.

 

String url = "http://www.ise.kr/OldData/live/";

String param = URLEncoder.encode("20051101-001 Tom의 행동.mp3", "UTF-8"); // 서버가 UTF-8 인지 확인 필요

String url += param;

Log.i("URL : ", url);
 
mp = new MediaPlayer();                 
//playAudio(url);
 
mp.reset();
 
try {
    mp.setDataSource(url);
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
aucd29 (218,390 포인트) 님이 2014년 1월 8일 답변
mp.prepare(); 에서 에러가다시뜨는데 이게 어느부분에서 에러가나는건가요 ㅠㅠ
...