aryana_b
پنج شنبه 15 مرداد 1394, 16:13 عصر
سلام دوستان
من کد زیر رو نوشتم که از طریق اون میتونم موقع برقراری یه سری تماس خاص گوشی رو به حالت سایلنت ببرم و بعد از قطع تماس به حالت قبلی برگرده
public class PhoneCallReceiver extends BroadcastReceiver {
AudioManager am;
public void onReceive(Context context, Intent 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);
}
}
}
الان با کد بالا گوشی صدای زنگش هر مقداری که باشه بعد از قطع تماس به همون مقدار برمیگرده ولی یک مشکلی هست اونم اینکه اگه گوشی قبل از تماس رو حالت سایلنت (بدون ویبره) و یا ویبره باشه بعد از قطع تماس به کمترین صدای زنگ میره (نه سایلنت و نه ویبره)
من یک خط که مشخص کردم رو به کد اضافه کردم که اگه سایلنته اصلن این شرط ها رو بررسی نکنه و کاری انجام نده ، ولی باعث شد تا خط 12م کار نکنه (رو سایلنت میمونه اگر قبلش زنگ دار بود):متفکر:اصلن نمیدونم چرا باید باعث بشه تا دوخط بعدش اجرا نشه:عصبانی++: :متفکر::ناراحت:
public class PhoneCallReceiver extends BroadcastReceiver {
AudioManager am;
public void onReceive(Context context, Intent intent) {
if (phoneNumber != null) {
if(am.getRingerMode()!=0){ //این خط رو اضافه کردم
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);
}
}
}
}
اول میخواستم حالت گوشی رو تو یه متغیر دیگه ذخیره کنم و بعد از قطع تماس به همون حالت بره ولی بازم کار نکرد (همین کد تو کلاسی که از برودکست رسیور اکستند نشده باشه کار میکنه :اشتباه:)
switch (temp.getRingerMode()) {
case am.RINGER_MODE_SILENT:
break;
case am.RINGER_MODE_VIBRATE:
break;
case am.RINGER_MODE_NORMAL:
break;
}
چیکار کنم درست بشه؟:ناراحت:
راهی هست که بشه تو بردوکست رسیور یه تابع از یه کلاس دیگه رو صدا کرد؟
من کد زیر رو نوشتم که از طریق اون میتونم موقع برقراری یه سری تماس خاص گوشی رو به حالت سایلنت ببرم و بعد از قطع تماس به حالت قبلی برگرده
public class PhoneCallReceiver extends BroadcastReceiver {
AudioManager am;
public void onReceive(Context context, Intent 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);
}
}
}
الان با کد بالا گوشی صدای زنگش هر مقداری که باشه بعد از قطع تماس به همون مقدار برمیگرده ولی یک مشکلی هست اونم اینکه اگه گوشی قبل از تماس رو حالت سایلنت (بدون ویبره) و یا ویبره باشه بعد از قطع تماس به کمترین صدای زنگ میره (نه سایلنت و نه ویبره)
من یک خط که مشخص کردم رو به کد اضافه کردم که اگه سایلنته اصلن این شرط ها رو بررسی نکنه و کاری انجام نده ، ولی باعث شد تا خط 12م کار نکنه (رو سایلنت میمونه اگر قبلش زنگ دار بود):متفکر:اصلن نمیدونم چرا باید باعث بشه تا دوخط بعدش اجرا نشه:عصبانی++: :متفکر::ناراحت:
public class PhoneCallReceiver extends BroadcastReceiver {
AudioManager am;
public void onReceive(Context context, Intent intent) {
if (phoneNumber != null) {
if(am.getRingerMode()!=0){ //این خط رو اضافه کردم
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);
}
}
}
}
اول میخواستم حالت گوشی رو تو یه متغیر دیگه ذخیره کنم و بعد از قطع تماس به همون حالت بره ولی بازم کار نکرد (همین کد تو کلاسی که از برودکست رسیور اکستند نشده باشه کار میکنه :اشتباه:)
switch (temp.getRingerMode()) {
case am.RINGER_MODE_SILENT:
break;
case am.RINGER_MODE_VIBRATE:
break;
case am.RINGER_MODE_NORMAL:
break;
}
چیکار کنم درست بشه؟:ناراحت:
راهی هست که بشه تو بردوکست رسیور یه تابع از یه کلاس دیگه رو صدا کرد؟