آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

گیر کرده  11 سال پیش  11 سال پیش
+1 0

سلام

من یک موزیک بگ گراند برای نرم افزار می خواهم نشان بدهم .نرم افزار من 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

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

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

 

+1 0
من هم این مشکل رو داشتم . جوابی پیدا نکردم . بعد از خروج از برنامه همچنان موزیک در حال اجرا بود. (11 سال پیش)
0 0
باید موزیک را stop کنید... (11 سال پیش)
+1 0
کد خروج از برنامه رو در استک پیدا کن و player رو اونجا متوقف کن player.stop ! (11 سال پیش)
+1 0
متد onBackPressed رو اوورراید کنید (11 سال پیش)
+1 0
متد onStop ,Onresum رو هم اور راید کنید (11 سال پیش)
 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
Mohammad  11 سال پیش
0 0

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

پاسخ به سوال 
ایوب شمسی  11 سال پیش
+1 0

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

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

    }
 
پاسخ به سوال 
sagheb95  11 سال پیش
0 0

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

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

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

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

کد من اینه :

 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();
       
               
     	
}
}
+1 0
پاسخ پایین رو ملاحضه کنید ! (11 سال پیش)
پاسخ به سوال 
MeY3am  11 سال پیش
+2 0

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 هم یادتون نره !

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

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

کلاس 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();
}

 

 


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