بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

پخش یک موزیک در تمام اکتیویتی ها

مدیریت گفتگو
گیر کرده 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام

من یک موزیک بگ گراند برای نرم افزار می خواهم نشان بدهم .نرم افزار من 10 اکتیوتی داره

در Splash نرم افزار من یک سرویس را فعال می کنم با کد زیر

public class BackgroundSoundService extends Service {
    private static final String TAG = null;
    MediaPlayer player;
    public IBinder onBind(Intent arg0) {

        return null;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        player = MediaPlayer.create(this, R.raw.background_music);
        player.setLooping(true); // Set looping
        player.setVolume(100,100);

    }
    public int onStartCommand(Intent intent, int flags, int startId) {
        player.start();
        return 1;
    }

    public void onStart(Intent intent, int startId) {
        // TO DO
    }
    public IBinder onUnBind(Intent arg0) {
        // TO DO Auto-generated method
        return null;
    }

    public void onStop() {

    }
    public void onPause() {

    }
    @Override
    public void onDestroy() {
        player.stop();
        player.release();
    }

    @Override
    public void onLowMemory() {

    }

موزیک اجرا می شود .تمام و کمال D:

با این کد که در اکتیوتی اصلی گذاشتم وقتی کاربر با دکمه بگ خارج شد سرویس را از بین می برم

Intent intent = new Intent(this, BackgroundSoundService.class);
        stopService(intent);

مشکل اینجاست که مثلا کاربر در اکتیوتی 4 هست که به این صورت است

splash>main activity<activity 2<activity 3<activity4

دکمه منو رو زد و از برنامه خارج شد و رفت توی یه نرم افزار دیگه.اما باز موزیک اجرا می شود.

به نظر اساتید من باید چه کار کنم؟

 

نظرات

sagheb95 11 سال پیش
من هم این مشکل رو داشتم . جوابی پیدا نکردم . بعد از خروج از برنامه همچنان موزیک در حال اجرا بود.
Mohammad 11 سال پیش
باید موزیک را stop کنید...
MeY3am 11 سال پیش
کد خروج از برنامه رو در استک پیدا کن و player رو اونجا متوقف کن player.stop !
hojat_babaie 11 سال پیش
متد onBackPressed رو اوورراید کنید
hojat_babaie 11 سال پیش
متد onStop ,Onresum رو هم اور راید کنید

پاسخ‌ها 6

Mohammad 11 سال پیش

شما باید کد متوقف کردن موزیک رو روی دکمه منو قرار بدی...جستجو کنید به نتیجه میرسید...

نظرات

ایوب شمسی 11 سال پیش

با سلام دوست عزیز ببین با این مشکلت حل میشه

  @Override
    protected void onPause() {
        super.onPause();
        if (this.isFinishing()) {
            mediaplayer.stop();
        }

    }
 

نظرات

sagheb95 11 سال پیش

من در برنامم و در داخل یکی از اکتیویتی هام یک فایل html دارم . اون اکتیویتی هم دارای یک موزیک هست . 

وقتی اون اکتیویتی باز میشه موزیک هم پخش میشه ، اما بعد 5 یا 6 ثانیه موزیک قطع میشه ،

کسی از دوستان اگر دلیل رو می دونه ، ممنون میشم راهنمایی کنه

نظرات

MeY3am 11 سال پیش
یا از ترد استفاده کردین اسلیپ رو 5000 یا 6000 میلی ثانیه گذاشتین و کد توقف رو داخل ترد گذاشتین یا خود موزیکتون 5 یا 6 ثانیه هستش، از این دوحالت خارج نیست !
sagheb95 11 سال پیش
این فایل html من داخلش چند تا عکس هست ، زمانی که به سمت بالا حرکت می کنه و کلا وقتی روی WebView کلیک می کنم صدا قطع میشه
MeY3am 11 سال پیش
خب بررسی کنید که کد توقف موزیک رو برای لایه مربوط به وب ویو ست نکردین !
sagheb95 11 سال پیش

کد من اینه :

 import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.webkit.WebView;
 
public class nogol extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.nogol);
    
   
    WebView webView = (WebView) findViewById(R.id.nogol);
       webView.loadUrl("file:///android_asset/nogol.html");
       
       
       final MediaPlayer mp=MediaPlayer.create(nogol.this, R.raw.lala);
       mp.start();
       
               
     	
}
}

نظرات

MeY3am 11 سال پیش
پاسخ پایین رو ملاحضه کنید !
MeY3am 11 سال پیش

sagheb95 @ از این کد استفاده کنید

public class nogol extends Activity {

public MediaPlayer player;

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

    player = MediaPlayer.create(G.currentActivity, R.raw.lala);
    player.setLooping(true); // Set looping 
    player.setVolume(100, 100);
    player.start();
    
   
    WebView webView = (WebView) findViewById(R.id.nogol);
    webView.loadUrl("file:///android_asset/nogol.html");
 	
      }
}

کلاس G هم یادتون نره !

نظرات

sagheb95 11 سال پیش
فورس کلوز میده
sagheb95 11 سال پیش
درست شد ، ممنون از زحمت شما
MeY3am 11 سال پیش
خواهش میکنم، برای تشکر از لایک vote استفاده کنید !
MeY3am 11 سال پیش
خواهش میکنم دوست عزیز ، برای تشکر از لایک vote استفاده کنید !
MeY3am 11 سال پیش
خواهش میکنم دوست عزیز ، برای تشکر از لایک vote استفاده کنید دوست من ممنون !
MeY3am 11 سال پیش
این که همش اسپم شد :(
Criss 11 سال پیش
بنظرتون اگر تمام اکتیویتی ها رو extennd از ActivityEnhanced کنیم < و اونجا متد on destroy رو استفاده کنیم ؟ ممکنه جواب بده ؟
Criss 11 سال پیش

من تست کردم جواب داد <

کلاس G

 public class G extends Application {

public static MediaPlayer player;


@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();

player = MediaPlayer.create(context, R.drawable.music);
player.setLooping(true);
}
}

این کد هارو توی اکتیویتی مورد نظر یا کلاس ActivityEnhanced میتونید قرار بدید <

 
public class ActivityEnhanced extends Activity {

@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
player.start();
}


@Override
protected void onStop() {
super.onStop();
G.player.stop();
}

 

 

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .