2010-02-19 39 views
6

Tất cả những gì tôi muốn làm chỉ đơn giản là điều khiển nhạc nền trong ứng dụng của mình thông qua dịch vụ để tôi có thể bắt đầu và dừng nó từ bất kỳ hoạt động nào.Điều khiển dịch vụ Android MediaPlayer

Tôi đã thiết lập mọi thứ một cách hoàn hảo khi tôi nói dịch vụ với Toast khi nó được khởi động và bị hủy nhưng ngay sau khi tôi đặt media playin ở đó thay vào đó Bắt đầu phát nhạc nhưng ngay khi nhấp chuột nút để dừng dịch vụ tôi nhận được một lỗi và một lực lượng gần.

XIN ai đó giúp tôi xem những gì tôi đang làm sai .. Tôi khá mới để phát triển Android Tôi đoán nó sẽ là một cái gì đó dễ dàng.

Đây là mã của tôi:

import android.app.Service; 

import android.content.Intent; 

import android.media.MediaPlayer; 

import android.os.IBinder; 

import android.widget.Toast; 

public class MyService extends Service { 

    private MediaPlayer player; 

    @Override 
    public IBinder onBind(Intent intent) { 

     return null; 

    } 

    @Override 
    public void onCreate() { 

     super.onCreate(); 

     Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); 

     MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 

     player.start(); 

     player.setLooping(true); 

    } 

    @Override 
    public void onDestroy() { 

     super.onDestroy(); 

     player.stop(); 

     Toast.makeText(this, "Service Stopped", Toast.LENGTH_SHORT).show(); 

    } 

} 
+0

Bạn có thể đăng lỗi hay không. Nó sẽ xuất hiện bạn đang đóng dịch vụ không chính xác :) Nhưng lỗi sẽ cho chúng tôi biết chính xác những gì. – Steve

+0

Xem câu trả lời của tôi cho bài đăng trùng lặp của bạn http://stackoverflow.com/questions/2298817/problem-with-my-android-service-please-help và xem điều đó có hữu ích không – snctln

Trả lời

0

onBind phương pháp trả về null chỉ nếu nó là một "Dịch vụ địa phương". Nếu tôi hiểu chính xác bạn, bạn muốn tạo dịch vụ từ xa.

hiển thị phần dịch vụ từ xa trong this reference site.

5

player.stop(); ----- dòng này phải được đem lại cho bạn nullPointerException.

private MediaPlayer player; tại đây bạn đang tạo tham chiếu chỉ. Đối tượng bạn đang tạo trong onCreate() chỉ có phạm vi cục bộ. Vui lòng tạo một đối tượng có phạm vi cấp lớp, sau đó nó sẽ hoạt động.

0

Bạn có đối tượng người chơi tuyên bố địa phương để các thủ tục OnCreate, loại bỏ các tuyên bố địa phương, xem dưới đây:

//MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 
player = MediaPlayer.create(MyService.this, R.raw.my_music); 
0

Giống như viết ** Rick D ** vấn đề đã được khai báo trong Media player bạn đã tuyên bố máy nghe nhạc trước đây, chỉ cần đặt:

player = MediaPlayer.create(ForegroundService.this, R.raw.my_music); 
Các vấn đề liên quan