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

AsyncTask 에러입니다. 돌다가 앱이 죽는데 도움부탁드립니다.

0 추천
protected void onCreate(Bundle savedInstanceState) {
//미디어DB를 읽고 해당 파일에 맞는 음악 메타데이터를 추출(Open API)

		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		String[] proj = { 
				MediaStore.Audio.Media.DATA,
				MediaStore.Audio.Media.ALBUM,
				MediaStore.Audio.Media.ARTIST,
				MediaStore.Audio.Media.TRACK
						
		};
		
		cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);
		if(cursor!=null && cursor.moveToFirst()){
			int dataColumn = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);
			int albumColumn = cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
			int artColumn = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
			int trackColumn = cursor.getColumnIndex(MediaStore.Audio.Media.TRACK);
			
			do{
				String mdatastream = cursor.getString(dataColumn);
				
				if (mdatastream.endsWith(".mp3")) {
				
					String album= cursor.getString(albumColumn);
					String artist = cursor.getString(artColumn);
					String track = cursor.getString(trackColumn);
					
					new NetworkTask().execute(artist, album, track);
					
				}
			}while(cursor.moveToNext());
			
		}


		
		//new NetworkTask().execute(null, null, null);

	}

	class NetworkTask extends AsyncTask<String, Void, Void> {


		
		
		protected Void doInBackground(String... params) {
			// TODO Auto-generated method stub
			
			
			GracenoteWebAPI api;
			try {


				api = new GracenoteWebAPI(clientID, clientTag);  //api 키 생성
				
				
				String userId = api.register();
				Log.i("userID", userId);
				
                                //메타데이터 검색
				GracenoteMetadata result = api.searchTrack(params[0], params[1], params[2]);
				result.print();
				//Thread.sleep(100);
			} catch (GracenoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			
			
			return null;
		}

}

 

 

Gracenote라는 OpenAPI를 사용중입니다.

WebAPI를 모바일에서 사용하려고 하고있는데 네트워크 연결이 필요해서 AsyncTask를 사용하였습니다.

충 29개 파일에 대한 곡을 뽑아와야하는데요, 한 10개 정도만 검색하고 멈추네요..ㅎㅎㅎ

테스트용이라 메인은 그냥 Hello world만 나오게하고 Log를 이용하여 정보가 제대로 넘어왔는지를 확인합니다.

 

02-08 23:15:06.865: E/AndroidRuntime(23682): FATAL EXCEPTION: AsyncTask #5
02-08 23:15:06.865: E/AndroidRuntime(23682): java.lang.RuntimeException: An error occured while executing doInBackground()
02-08 23:15:06.865: E/AndroidRuntime(23682): at android.os.AsyncTask$3.done(AsyncTask.java:299)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
02-08 23:15:06.865: E/AndroidRuntime(23682): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.lang.Thread.run(Thread.java:841)
02-08 23:15:06.865: E/AndroidRuntime(23682): Caused by: java.lang.NullPointerException
02-08 23:15:06.865: E/AndroidRuntime(23682): at radams.gracenote.webapi.GracenoteMetadata.<init>(GracenoteMetadata.java:23)
02-08 23:15:06.865: E/AndroidRuntime(23682): at radams.gracenote.webapi.GracenoteWebAPI._parseResponse(GracenoteWebAPI.java:276)
02-08 23:15:06.865: E/AndroidRuntime(23682): at radams.gracenote.webapi.GracenoteWebAPI._execute(GracenoteWebAPI.java:135)
02-08 23:15:06.865: E/AndroidRuntime(23682): at radams.gracenote.webapi.GracenoteWebAPI.searchTrack(GracenoteWebAPI.java:89)
02-08 23:15:06.865: E/AndroidRuntime(23682): at com.teste.gracenotetest.MainActivity$NetworkTask.doInBackground(MainActivity.java:96)
02-08 23:15:06.865: E/AndroidRuntime(23682): at com.teste.gracenotetest.MainActivity$NetworkTask.doInBackground(MainActivity.java:1)
02-08 23:15:06.865: E/AndroidRuntime(23682): at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-08 23:15:06.865: E/AndroidRuntime(23682): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-08 23:15:06.865: E/AndroidRuntime(23682): ... 4 more
 
 
위에가 로그부분 입니다. 무엇이 문제인지 잘 모르겠어서... 확인 한 번 부탁드립니다.
tanggle33 님이 2015년 2월 8일 질문

1개의 답변

0 추천
로그에 답 다 나와있는 것 같습니다만...
익명사용자 님이 2015년 2월 8일 답변
...