我正在制作一个从URL流mp3的应用程序。我可以毫无问题地播放和停止媒体。 然后,我尝试将媒体播放器作为服务运行。但是流式传输会在几秒钟后停止。我不知道出了什么问题。 请帮助我解决此问题。谢谢。以下是我的Java文件。
这是MainActivity.java文件
package com.example.yomal.rathumakarafm;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageButton;
import java.io.IOException;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageButton buttonStart;
private ImageButton buttonStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonStart = (ImageButton) findViewById(R.id.buttonStart);
buttonStop = (ImageButton)findViewById(R.id.buttonSop);
buttonStart.setOnClickListener(this);
buttonStop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v == buttonStart){
startService(new Intent(this, RathuMakara.class));
}
else if (v == buttonStop){
stopService(new Intent(this, RathuMakara.class));
}
}
}
这是Service类文件,它是RathuMakara.java
package com.example.yomal.rathumakarafm;
import android.app.Service;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.support.annotation.Nullable;
import java.io.IOException;
public class RathuMakara extends Service {
private MediaPlayer rathu;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startID) {
String url = "http://206.189.34.189:8000/rathumakara.mp3";
MediaPlayer rathu = new MediaPlayer();
rathu.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
rathu.setDataSource(url);
try {
rathu.prepare();
} catch (IOException e) {
e.printStackTrace();
}
rathu.start();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
return START_STICKY;
}
@Override
public void onDestroy() {
rathu.stop();
}
}
这是activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_marginTop="0dp"
android:orientation="horizontal"
android:layout_gravity="center_horizontal"
android:layout_weight="1">
<ImageButton
android:id="@+id/buttonStart"
android:layout_width="66dp"
android:layout_height="68dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="120dp"
android:background="@drawable/play"
android:backgroundTint="@color/colorAccent"
android:padding="10dp" />
<ImageButton
android:id="@+id/buttonSop"
android:layout_width="65dp"
android:layout_height="66dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:background="@drawable/stop"
android:backgroundTint="@color/colorAccent" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
这是AndroidManifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yomal.rathumakarafm">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/logo_round"
android:label="@string/app_name"
android:roundIcon="@drawable/logo_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".SplashActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
<service android:name=".RathuMakara"
android:label="Rathu Makara"
android:process=":remote"/>
</application>
</manifest>