0

URL を渡すと正常に動作します (ユーザーがボタンをクリックします):

final Intent i = new Intent(MusicService.ACTION_URL);
Uri uri = Uri.parse("http://stream-72.shoutcast.com:80/hot108_mp3_128kbps");
i.setData(uri);
startService(i);

しかし、ユーザーが ListView 項目をクリックしても、何も起こりません。

public List<String> songs = new ArrayList<String>();

protected void onListItemClick(ListView l, View v, int position, long id) {
  playSong(MEDIA_PATH + songs.get(position));
}


private void playSong(String songPath) {
    final Intent i = new Intent(MusicService.ACTION_URL);
    Uri uri = Uri.parse(songPath);
    i.setData(uri);
    startService(i);
}

Toasts をセットアップしようとしましMusicService.ACTION_URLたが、ListView シナリオでのみ呼び出されることはありませんが、最初のボタン クリック シナリオでは呼び出されます。

playSong メソッド内で (サービスの外部で) ローカルの MediaPlayer を作成しようとしましたが、正常に動作しますが、代わりに MusicService でリスト項目の再生を処理する必要があります。

mp.setDataSource(songPath);

教えてください、私は何が間違っていますか?さらに情報が必要な場合はお知らせください。ありがとう。

更新されたマニフェスト ファイルは次のとおりです。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Design.streaming"
android:versionCode="56"
android:versionName="1.8.0.2" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="15" />
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:smallScreens="true"
android:resizeable="true" android:anyDensity="true" />

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature name="android.hardware.touchscreen" required="false" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar" android:debuggable="false">
    <activity
        android:name=".Main"
        android:launchMode="singleTask"
        android:configChanges="orientation"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>  

    <activity android:name="com.paypal.android.MEP.PayPalActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"> 
</activity>

    <activity android:name=".Blog" android:launchMode="singleTask"     android:configChanges="keyboardHidden|orientation" />
    <activity android:name=".Favs" android:launchMode="singleTask"     android:configChanges="keyboardHidden|orientation" />
    <activity android:name=".Songs" android:launchMode="singleTask"     android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".IcyStreamMeta" />
    <activity android:name=".Favorites"> </activity>
    <activity android:name=".PizzaMain" />
    <activity android:label="@string/app_name" android:name="Info"/>
    <activity android:name=".SomafmActivity" android:launchMode="singleTask"
        >
        <intent-filter>
            <action android:name="com.LudwigAppDesign.streamingradioplayerproMain" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <activity android:name=".SongsActivity" android:launchMode="singleTask"
         />
    <activity android:name=".AncientfmActivity" android:launchMode="singleTask"
         />
    <activity android:name=".Pizza" 
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/app_name">
        </activity>
    <activity android:name=".ResultDeligate" />
    <activity android:name=".AppPreferenceActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action 
                android:name="net.learn2develop.AppPreferenceActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <service
        android:name=".MusicService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.action.PLAY" />
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.action.PAUSE" />
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.action.SKIP" />
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.action.REWIND" />
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.action.STOP" />
        </intent-filter>
        <intent-filter> 
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.Main" />  
            <category android:name="android.intent.category.DEFAULT" />  
        </intent-filter> 
        <intent-filter>
            <action android:name="com.LudwigAppDesign.streamingradioplayerpro.action.URL" />

            <data android:scheme="http" />
            <data android:scheme="file" />
        </intent-filter>
    </service>

    <receiver android:name=".MusicIntentReceiver" >
        <intent-filter>
            <action android:name="android.media.AUDIO_BECOMING_NOISY" />
        </intent-filter>
    </receiver>

</application>

4

1 に答える 1

2

次のコードを試してください。

private void playSong(String songPath) {
    final Intent i = new Intent(MusicService.ACTION_URL);
    File file = new File("file://"+songPath);
    Uri uri = Uri.fromFile(file);
    i.setData(uri);
    startService(i);
}
于 2013-01-03T08:43:05.313 に答える