کلیدستان

نسخه‌ی کامل: مشکل با audio manager
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
من کد زیر رو نوشتم که از طریق اون میتونم موقع برقراری یه سری تماس خاص گوشی رو به حالت سایلنت ببرم و بعد از قطع تماس به حالت قبلی برگرده
کد پی‌اچ‌پی:
public class PhoneCallReceiver extends BroadcastReceiver {

 
AudioManager am;

public 
void onReceive(Context contextIntent intent) {

 if (
phoneNumber != null) {
          
     
am.setRingerMode(0);
          
          
String state intent.getStringExtra(TelephonyManager.EXTRA_STATE  );
          if (
state.equals(TelephonyManager.EXTRA_STATE_IDLE) || state.equals(TelephonyManager.CALL_STATE_IDLE)) {
                 
                      
am.setRingerMode(2);
          }
}


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

من این کد رو به بالای if اضافه کردم که اگه سایلنته اصلن این شرط ها رو بررسی نکنه ولی باعث شد تا بعد از اینکه به حالت سایلنت میبره دیگه برنگردونه (رو سایلنت میمونه اگر قبلش زنگ دار بود)اصلن نمیدونم چرا باید باعث بشه تا دوخط بعدش اجرا نشه
کد پی‌اچ‌پی:
if(am.getRingerMode()!=0
از این کد هم استفاده کردم ولی کار نکرد همین کد توی کلاسی که از broadcast recever اکستند نشده باشه کار میکنه
کد پی‌اچ‌پی:
switch (temp.getRingerMode()) {
   case 
am.RINGER_MODE_SILENT:
   break;
   case 
am.RINGER_MODE_VIBRATE:
   break;
   case 
am.RINGER_MODE_NORMAL:
   break;


چیکار کنم درست بشه؟
راهی هست که بشه تو بردوکست رسیور یه تابع از یه کلاس دیگه رو صدا کرد؟
پ.ن: ببخشید خیلی طولانی و بد توضیح دادم