2016-07-12 8 views
-2

私はテキストファイルである "yyyyyyy.com/test.txt"というURLを持っています。 これには、.mp3オーディオのURLが含まれています。Android - URLで文字列を入力する

yyyyyyy.de/1.mp3 
yyyyyyy.de/2.mp3 
yyyyyyy.de/3.mp3 //exactly like that 

私の意図このテキストファイルの各行を読んで、

urls[0]=yyyyyyy.de/1.mp3 
urls[1]=yyyyyyy.de/2.mp3 ... 

このような配列に格納しました。

String[] urls; 
int i=0; 

Random rand; 
int min=0; 
int max=5; // I have 6 Urls in the text file 
int randomNum; 

@Override 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    rand = new Random(); 

    randomNum = rand.nextInt((max - min) + 1) + min; //generates integer between 0-5 
    try { 
     // Create a URL for the desired page 
     URL url = new URL("yyyyy.de/test.txt"); //My text file location 

     // Read all the text returned by the server 
     BufferedReader in = new BufferedReader(new  InputStreamReader(url.openStream())); 
     String str; 
     while ((str = in.readLine()) != null) { 
      urls[i]=str; 
      i++; 
     } 
     in.close(); 
     } catch (MalformedURLException e) { 
     } catch (IOException e) { 
    } 


    boolean isPLAYING = false; 

    if (!isPLAYING) { 
     isPLAYING = true; 
     MediaPlayer mp = new MediaPlayer(); 
     try { 
      mp.setDataSource(urls[randomNum]); 
      mp.prepare(); 
      mp.start(); 
     } catch (IOException e) { 

     } 
    } else { 
     isPLAYING = false; 

    } 

} 

私はすでにManifest.xmlにandroid:権限を追加しています。問題がどこにある は、私にはわからない...アプリは、自分自身を閉じ、このライン「mp.setDataSource(urls[randomNum]);は」

ここでLogCat間違っていることを私に伝えます :事前にhttp://textuploader.com/5iw5b 感謝!!

+0

嘆願e post error log – Arjun

+0

2つのこと:1) 'urls'配列を作成した後に' randomNum'を生成して、初期化できるようにします(0から 'urls.size()')。そうすれば、ファイル内の行を追加したり削除したりするときに、プログラムの 'max'の値を変更する必要はありません。 2)あなたのプログラムをデバッグして、 'urls'にあるエントリの数を確認してください。デバッグ方法がわからない場合は、代わりにprintステートメントを入れてください。 –

+0

ドキュメントから、 'void setDataSource(String path)'の主な例外は 'IllegalStateException'、' IOException'、 'IllegalArgumentException'、' SecurityException'です。 LogCatのエラーログ、または私たちがあなたを助けるための追加情報を私たちに提供しなければなりません。また、URLにアクセスすると、サーバーからの返信は何ですか?バイナリ、エンコードされたテキストなど?私はエラーログ@ Dr.Nitpickをアップロードしました1)ありがとう2)それを取得していない、あなたのアプリケーションを中断する可能性があります(例えば、300のHTTP応答) – Bonatti

答えて

0

あなたの配列がアップデート3 super.onCreate

urls=new String[max]

後にこのコードを入れNULL

です:

はこれを試してみてください。

ArrayList<String> urls=new ArrayList<String>(); 

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

    try { 
     // Create a URL for the desired page 
     URL url = new URL("yyyyy.de/test.txt"); //My text file location 

     // Read all the text returned by the server 
     BufferedReader in = new BufferedReader(new  InputStreamReader(url.openStream())); 
     String str; 
     while ((str = in.readLine()) != null) { 
      urls.add(str); 
     } 
     in.close(); 
     } catch (MalformedURLException e) { 
     } catch (IOException e) { 
    } 

Log.i("test","url count="+urls.size()); 


    boolean isPLAYING = false; 

    if (!isPLAYING) { 
     isPLAYING = true; 
     MediaPlayer mp = new MediaPlayer(); 
     try { 
      int randomPos = new Random().nextInt(urls.size()); 
      mp.setDataSource(urls.get(randomPos)); 
      mp.prepare(); 
      mp.start(); 
     } catch (IOException e) { 

     } 
    } else { 
     isPLAYING = false; 

    } 

} 
+0

私は同じエラー – killertoge

+0

を取得します。 –

+0

ご協力いただきありがとうございますが、どちらも動作しません。 – killertoge

関連する問題