نمایش نتایج 1 تا 4 از 4

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

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,117

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

    سلام دوستان

    من میخواستم داخل اپلکیشن از وقتی که کاربر وارد میشه در کلیه اکیتویتی ها یک موزیک پخش بشه. درواقع حتی وقتی وارد اکتیویتی دیگر میشم موزیک قطع نشه و ادامه اون موزیک در اکتیویتی که داخلش هستیم پخش بشه.

    برای اینکار در کلاس زیر چنین سرویسی را تعریف کردم :

    public class BackgroundMusicService extends Service {

    public static MediaPlayer player;


    public IBinder onBind(Intent arg0) {
    return null;
    }


    @Override
    public void onCreate() {
    super.onCreate();


    player = MediaPlayer.create(this, R.raw.music);
    player.setLooping(true); // Set looping
    player.setVolume(100,100);


    }


    public int onStartCommand(Intent intent, int flags, int startId) {


    player.start();


    return 1;
    }


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


    @Override
    public void onLowMemory() {


    }


    }


    و در مانیفیست هم تعریف کردم :

    <service            android:name=".BackgroundMusicService"
    android:stopWithTask="true" />





    حالا در ماین اکیتویتی این سرویس را بدین صورت اجرا کردم :

       startService(new Intent(MainActivity.this,BackgroundMusicService.cl  ass));


    متاسفانه وقتی وارد اکتیویتی دیگر میشم موزیک بلافاصله قطع میشه!

    برای حل این مساله در اکتیویتی های دیگر چیکار باید انجام داد ؟!

  2. #2
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    37
    پست
    709

    نقل قول: پخش موزیک در کلیه اکیتویتی ها

    بهتره که سرویس را در کلاس application استارت کنید.

    public class MyApplication extends Application {
    public void onCreate() {
    super.onCreate();
    startService(new Intent(this, BackgroundMusicService.class));
    }
    }


    بهتره از IntentService استفاده کنی یا حتی خیلی بهتره از کلاس JobService تا اینکه از کلاس Service استفاده کنی علی الخصوص JobService خیلی بهینه تر شده ازنظر کاراآیی و بازدهی.

  3. #3
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,117

    نقل قول: پخش موزیک در کلیه اکیتویتی ها

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    بهتره که سرویس را در کلاس application استارت کنید.

    public class MyApplication extends Application {
    public void onCreate() {
    super.onCreate();
    startService(new Intent(this, BackgroundMusicService.class));
    }
    }


    بهتره از IntentService استفاده کنی یا حتی خیلی بهتره از کلاس JobService تا اینکه از کلاس Service استفاده کنی علی الخصوص JobService خیلی بهینه تر شده ازنظر کاراآیی و بازدهی.
    دوست عزیز من درباره کدنویسی IntentService و JobService تحقیق کردم...منتهی میدونید JobService فقط در api 21 و بالاتر قابل اجرا هست پس این رو نمیتوانم استفاده کنم چون میخوام از api 17 هم استفاده کنم.


    برای همین سوالی که ازتون داشتم این هستش که :

    - ایا کدهایی که در پست اول نوشتم در اندروید بالاتر مثلا نسخه 8 کار میکنند یا خیر ؟ extends Service

    - همین رو پس با IntentService بنویسم چطور ایا در اندروید 8 کار میکند ؟

    اخه خیلی از دوستان میگفتن در اندروید 8 تغییرات زیادی اعمال شده و سرویس ها به درستی اجرا نمیشوند...برای همین موندم که از کدوم استفاده کنم که مشکلی نداشته باشم.

    نقل قول شده از یکی از دوستان :
    "توی اندروید هشت سرویس یا اینتنت سرویس وقتی گوشی توی حالت doze mode هستش اجرا نمیشه، این قضیه در مورد همه ی کارهایی که بگراند انجام میشن صدق می‌کنه"

    برای همین تنها راهی که فکر میکنم اصولی باشه اینه : یک شرط بزارم اگر api بالاتر 21 بود از جاب سرویس استفاده کنم و اگر پایینتر بود از سرویس یا اینتنت سرویس...نظرشما چیه ؟

    یا اینکه از کتابخانه هایی مثل https://github.com/evernote/android-job استفاده کنم که البته تست نکردم هنوز.

    و یه سوال دیگر اینکه مفهوم android:exported رو من متوجه نشم که در مانفیست برای سرویس اعمال میکنیم ..درواقع وقتی ترو هست با وقتی که فالس هست چه تفاوتی دارند؟

    android:exported


    true : can receive events sent by same or others applications


    false‍ : can receive events sent by same application
    آخرین ویرایش به وسیله samiasoft : جمعه 11 آبان 1397 در 22:36 عصر

  4. #4
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    37
    پست
    709

    نقل قول: پخش موزیک در کلیه اکیتویتی ها

    - ایا کدهایی که در پست اول نوشتم در اندروید بالاتر مثلا نسخه 8 کار میکنند یا خیر ؟ extends Service
    مگه داریم گوشی که اندروید 8 داشته باشه.! ولی من یکبار چک کردم البته روی شبیه ساز درست کار نکرد.

    برای همین تنها راهی که فکر میکنم اصولی باشه اینه : یک شرط بزارم اگر api بالاتر 21 بود از جاب سرویس استفاده کنم و اگر پایینتر بود از سرویس یا اینتنت سرویس...نظرشما چیه ؟
    بله من هم موافقم بهتره یک شرط کنترلی بذارید وبعد سرویس ها را اجرا کنید.
    البته استفاده از کتابخانه هم ایده بدی نیست ولی من معمولا سرویس ها را خودم می نویسم به این علت که انعطاف بیشتری دارم و هر اشکالی داشته باشه بهتر هندل میشه!

تاپیک های مشابه

  1. سوال: پخش موزیک در بک گراند سایت
    نوشته شده توسط saman.h در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: پنج شنبه 08 اردیبهشت 1390, 10:24 صبح
  2. سوال: مشکل با پخش موزیک در بک گراند سایت
    نوشته شده توسط saman.h در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 07 اردیبهشت 1390, 14:55 عصر
  3. رجيستر كردن فايل هاي dll و ocx در كليه سيستم ها
    نوشته شده توسط jmfnima در بخش Access
    پاسخ: 3
    آخرین پست: دوشنبه 19 مهر 1389, 14:05 عصر
  4. كد عضويت و نمايش اطلاعات در كليه تكست ها
    نوشته شده توسط Rezapcclick در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: یک شنبه 10 خرداد 1388, 17:16 عصر
  5. اعمال تغییرات همزمان در کلیه کلاینت ها
    نوشته شده توسط ali_mnkt در بخش C#‎‎
    پاسخ: 11
    آخرین پست: چهارشنبه 23 اردیبهشت 1388, 17:09 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •