2012-01-13 10 views
8

Tamam, Skype'ın bildirimini, çağrı sırasında çalışan herhangi bir Hizmet veya Yayın olup olmadığını öğrenmek üzere çözdüm. Gelen çağrılar için sadece birkaç dahili yayın var. Ayrıca sadece bir alıcı ve bir servis var.Bir Skype çağrısının şu anda Android'de etkin olup olmadığını nasıl tespit edersiniz

Tüm çalışan hizmetlerimi uygulamam ile izledim, ancak çağrıda olmasa da SkypeMainService her zaman çalışıyor.

Ayrıca, AudioMode skype tarafından değiştirilmez (ancak dev istediği logcat-log'larına göre, ancak bunu yapmazlar), bu yüzden MODE_IN_CALL olup olmadığını kontrol edemiyorum.

Skype şu anda çalışıyorsa ve etkin bir aramayla çalışıyorsa, nasıl bulunacağınız konusunda herhangi bir öneriniz var mı?

Teşekkürler!

/düzenle: Etkinlikler vb kısa bir bakış:

<activity android:name="com.skype.raider.Main"> 
<activity-alias android:name="com.skype.raider.ui.SplashScreenActivity" android:targetActivity="com.skype.raider.Main"> 
<receiver android:name="com.skype.MainReceiver" android:enabled="true" android:exported="false"> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
    <action android:name="android.intent.action.SEARCH" /> 
    <action android:name="android.intent.action.CALL_PRIVILEGED" /> 
    <action android:name="com.skype.raider.INCOMING_GSM_CALL" /> 
    <action android:name="com.skype.raider.ON_GSM_CALL" /> 
    <action android:name="com.skype.raider.intent.action.request_sync" /> 
</receiver> 
<service android:name="com.skype.MainService"> 
+1

Skype'ı kullanmak, ancak bir * aktif olup olmadığını * Sonra SkypeActivity (ya da adı her neyse) olmaz deme olmak ön plan etkinliği? Açıkça ActivityManager ile algılanabilir ... –

+0

Evet, bu benim de ilk düşüncemdi - ancak Skype'ın yalnızca iki aktivitesi var: Bir Splashscreen Aktivitesi ve Ana Aktivite. MainActivity her şeyi yapar, hatta çağrıları idare eder ... – Force

cevap

2

Tamam bilinen herhangi API için Skype developers page kontrol nihayet PhoneManager

3) ve kullanarak, gerçekten s umut Herkes çok yararlı bir cevap verebilirdi. Ancak, ben açıklamada Reuben'ın tavsiyesi aldı ve bu yöntemi yaptı: Sonuç com.skype.raider.Main eşitse

/** 
* Gets the current activity 
* 
* @param context 
*   A context to use 
* @return The Activity name 
*/ 
public static String getCurrentTopActivity(Context context) { 
    ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1); 
    ActivityManager.RunningTaskInfo ar = RunningTask.get(0); 
    return ar.topActivity.getClassName().toString(); 
} 

Sonra kontrol edin. Bu, no'lu aktif Skype çağrısı olduğunda da geçerli olacaktır, ancak ana uygulama açıktır.

Tüm yardımlarınız için teşekkürler, özellikle Reuben!

Düzenleme: içinde Sizin şu izin gerekecektir senin apaçık

<uses-permission android:name="android.permission.GET_TASKS"/> 
+1

Benim için çalışmıyor, bu kodu arka plan servisimde kullandım. Bunun için bir öneri var mı? –

0

Skype (şu andan itibaren 2 gün içinde geliyor o güncellemede olabilir - Eğer kodlama işlemini tamamlamadan önce) bunların hiçbirini değiştiren gün kodunuzu kırılabilir Bu yüzden, bu tür bir şeyi denemeye değer olduğunu düşünmüyorum.

Üzgünüm, bu bir "cevap" olmayabilir, ama buna harcanan zamanın buna değeceğini sanmıyorum. Uygulama çalışıyorsa

1) Giriş:

ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
    List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses(); 
    for(int i = 0; i < procInfos.size(); i++){ 
     if(procInfos.get(i).processName.equals("com.android.browser")) { 
      Toast.makeText(getApplicationContext(), "Browser is running", Toast.LENGTH_LONG).show(); 
     } 
    } 

2) alışverişi veriler için telefon durumunu kontrol

+0

Bunun tamamen farkındayım. Ancak, mevcut yazılım için bir çözüm istemiştim, geleceğe yönelik bir çözüm değil. Ve güncellemeyle ne demek istiyorsun? Önümüzdeki iki günde piyasaya sürülecek bir güncelleme var mı? – Force

-1

bunu tahmin şansınızı artırmak için yapabileceğiniz birkaç şey vardır

+0

Hayır, daha önce de söylediğim gibi, Skype Sürecinin çalışıp çalışmadığını kontrol etmek mantıklı değil (** her zaman çalışıyor **) ve buna ek olarak ** bu sitede hiçbir Android API'si yok **. – Force

+0

Ayrıca, soruda yazdığım gibi telefon durumu değişmez. – Force

İlgili konular