Как передать значение в Сервисах? - PullRequest
0 голосов
/ 08 марта 2011

Я делаю медиаплеер, который может работать в фоновом режиме.Я должен отправить строку URI в этом сервисе.но я не могу отправить значение URI из моей деятельности через класс bundle.Services не поддерживает getIntent () и показать ошибку.Как я могу отправить URI в сервис через деятельность.помогите пожалуйста

package com.abc.activity;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class MyService extends Service {
    private static final String TAG = "MyService";
    MediaPlayer player;
    String uri,url;
    Bundle b;
    AudioPlayer2 ap;


    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Log.d(TAG, "onCreate");

        Uri path=Uri.parse("/mnt/sdcard/download/abc.mp3");
        player = MediaPlayer.create(this,path );
        player.setLooping(false); // Set looping
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        player.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        //Bundle extras = getIntent().getExtras();
        player.start();
    }
    public void getValue(String uri)
    {
        url=uri;
    }
}

Это работает со статическим URL, который я использую в этом примере.пожалуйста, предложите, что я могу получить значение URI из моего класса деятельности. В этом классе не работает пакет

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Вам следует использовать IntentService http://developer.android.com/reference/android/app/IntentService.html.

Реализация onHandleIntent(Intent intent), которая будет вызываться каждый раз, когда вы запускаете службу с startService(intent).Вы можете передать свои данные в службу через это намерение.

0 голосов
/ 08 марта 2011

Если вы пытаетесь отправить строку или массив строк из одного действия в другое, это можно сделать в намерении.

В классе A:

Intent intent = new Intent(this, ClassB);<br> tring[] myStrings = new String[] {"test", "test2"};<br> intent.putExtra("strings", myStrings);<br> startActivity(intent);

В классе B:

public void onCreate() {<br> Intent intent = getIntent();<br> String[] myStrings = intent.getStringArrayExtra("strings");<br> }

...