GRANDSTREAM GSC3574 Android Çərçivə Xidməti
Məhsuldan İstifadə Təlimatları
- Tətbiq Modulu altında gslibs adlı qovluq yaradın.
- JAR-ı kopyalayın files gsapi-1.2.1.jar faylını gslibs qovluğuna daxil edin.
- Quruluşda. qranul file, tamamilə və ya təmin ediləndən istifadə edərək asılılıqlar əlavə edin:
- Bütün API-lər XXXApi kimi adlandırılır (məsələn, BaseAccountApi, BaseCallApi).
- API-lərdən istifadə etməzdən əvvəl ApiClient-i işə salın. GSC3574/75 üçün API çağırılması onu avtomatik olaraq ilk olaraq işə salacaq. Funksiyaları və monitorları aşağıdakı kimi istifadə edin:
Tez-tez verilən suallar
- S: JAR-ı daxil edə bilərəmmi? fileAPK-da?
- A: Xeyr, lütfən, JAR-ı qablaşdırmayın files APK daxil edin.
- S: GXV34xx və GSC3574/3575 üçün ən son proqram təminatı versiyasını harada tapa bilərəm?
- A: Firmware buraxılış məlumatını aşağıdakı linkdə tapa bilərsiniz: Firmware Buraxılış Məlumatı
- S: Bütün siniflər, funksiyalar və sinif üzvləri dəstəklənən API-nin bir hissəsidirmi?
- A: Xeyr, yalnız gsApiExternal-en-də müəyyən edilmişlər dəstəklənən API-nin bir hissəsidir. Başqaları xəbərdarlıq etmədən dəyişdirilə və ya silinə biləcəyi üçün riski öz üzərinizə götürün.
BİTDİVIEW
GXV3470/GXV3480/GXV3450 və GSC3574/3575 əməliyyat sistemləri AndroidTM platforması əsasında hazırlanmışdır. Android interfeys funksiyalarını miras almaqla yanaşı, istifadəçilərin tələblərindən daha çox interfeys dəstəklənib. Bu sənəd GXV3470/GXV3480/GXV3450 və GSC3574/3575-də istifadəçilərin proqram inkişafı üçün API-lərdən necə istifadə olunacağını təsvir edir.
Qeyd
API demosuna başlamazdan və ya öz tətbiqlərinizi sınaqdan keçirməzdən əvvəl, lütfən, GXV3470/GXV3480 /GXV3450/GSC3574/GSC3575-i ən son proqram təminatı versiyasına təkmilləşdirin. Firmware buraxılışı haqqında məlumatı aşağıdakı linkdə tapa bilərsiniz: https://www.grandstream.com/support/firmware
TƏTBİQ BİNASI
- GS JAR ilə files, istifadəçilər bu təlimatdakı addımlara əməl edərək Android Studio (və ya başqa bir IDE) ilə proqramlar qurmağa başlaya bilərlər.
Tətbiq Modulu altında "gslibs" dizini yaradın
- Tətbiq modulu altında "plitələr" kataloqu yaradın. Sonra JAR-ı kopyalayın files “gsapi-1.2.1.jar” “gslibs” kataloqu altında, beləliklə JAR files proqramdan əldə edilə bilər files.
Build.gradle
build.gradle-ə asılılıqlar əlavə edin file Yalnızca compile istifadə edərək və ya təmin edilir. Zəhmət olmasa JAR-a baxın fileistinad üçün aşağıdakı yol:
- asılılıqlar {. . . . . . tamamilə files ('gslibs/gsapi-1.2.1.jar') }
Qeyd
Lütfən, JAR-ları APK-yə paketləməyin. Lütfən, proqramınızı tərtib edərkən daxil edilə bilən JAR-ları sadalayan aşağıdakı cədvələ baxın. Onlar "build.gradle" əlavə edilməlidir file istifadə olunarsa
Paket | Təsvir |
com.gs.common | Gs ApiClient-i dəstəkləyin |
com.gs.account | Gs Hesabı API-lərini dəstəkləyin |
com.gs.phone | Gs Phone API-lərini dəstəkləyin |
com.gs.kontaktlar | Gs Contacts API-lərini dəstəkləyin |
com.gs.kataloq | Gs Catalog API-lərini dəstəkləyin |
com.gs.sms | Gs sms API-lərini dəstəkləyin |
JAR-larda əsas API siyahısı
Yuxarıdakı JAR-lara daxil olan əsas API-lərin siyahısı:
API | Təsvir |
AudioRouteApi | Audio marşrutla əlaqəli API-lər. Bu, səs marşrutunu dəyişdirmək və audio marşrutunu yoxlamaq üçün istifadə olunur. |
BaseAccountApi | Hesablarla əlaqəli API-lər. Bu zənglər üçün istifadə olunur. |
BaseLineApi | Xətlərlə əlaqəli API-lər. Bu, gedən zənglər və gələn zənglər üçün xətt kanalları yaratmaq üçün istifadə olunur. |
BaseCallApi | Zənglərlə əlaqəli API-lər. Bu, zəng etmək, zəng qəbul etmək və s. üçün istifadə olunur. |
BasePhoneService | Defolt telefon proqramı kimi hədəf tətbiq üçün API-lər. |
ƏlaqələrKontekst | Yarat-Oxu-Yenilə-Sil (CRUD) kontaktları üçün faydalı API sabitləri. |
CalllogContext | Yarat-Oxu-Yenilə-Sil (CRUD) zəng qeydləri üçün faydalı API sabitləri. |
SmsManagerAPI | SMS ilə əlaqəli API-lər. Bu, SMS göndərmək, SMS lis əlavə etmək və s. üçün istifadə olunur. |
API üçün təsvirlər
Qeyd
Bütün siniflər, funksiyalar və sinif üzvləri gsApiExternal-en-də müəyyən edilməyən hər hansı dəstəklənən API-nin bir hissəsi DEYİL. Yazılan kod bunlardan asılıdırsa, riski öz üzərinizə götürərək davam edin. Bu kod və onun daxili interfeysləri xəbərdarlıq edilmədən dəyişdirilə və ya silinə bilər.
API-lərdən istifadə edin
- Bütün API-lər BaseAccountApi, BaseCallApi, BaseLineApi və SmsMAnagerApi kimi XXXApi kimi adlandırılır.
- API-lərdən istifadə etməzdən əvvəl istifadəçilər əvvəlcə ApiClient-i işə salmalıdırlar. GSC3574/75 üçün Api-yə (XXXApi) zəng etmək ilk növbədə onu avtomatik olaraq işə salacaq ki, ApiClient/IApi silinsin.
- XXXApi.function1() kimi funksiyadan istifadə edin
- XXXApi.function2 (geri zəng2) kimi monitordan istifadə edin
- API funksiyalarının təfərrüatlarını gsApiExternal-en kataloqunda tapa bilərsiniz.
ApiClient-i işə salın
Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450.
Tətbiq com.gs.com tərəfindən ApiClient-dən istifadə edə bilər. ApiClient-i işə salmaq üçün proqram blokunda setContext, addApi və qurmaq funksiyalarından istifadə edin.
Qeyd
İnisiallaşdırma hər proses üçün yalnız bir dəfə həyata keçirilməlidir. Lütfən, eyni prosesi bir dəfədən artıq başlatmayın.
ApiClient-i işə salmaq üçün aşağıdakı koda əməl edin
- ictimai sinif DemoApplication Tətbiqi genişləndirir {@Override public void onCreate() { super.onCreate();
- ApiClient.builder.setContext (getApplicationContext())
- .addApi(BaseAccountApi.API)
- .addApi(BaseCallApi.API)
- .addApi(BaseLineApi.API)
- .addApi(SmsManagerApi.API)
- .addApi(AudioRouteApi.API)
- .build(); } }
BaseAccountApi
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
- Account API hesab məlumatlarını əldə etmək, hesab məlumatlarını dəyişdirmək və hesab dəyişikliklərinə nəzarət etmək üçün istifadə edilə bilər.
Hesab Məlumatı
Siz BaseAccountApi.getAllSipAccounts istifadə edərək bütün hesab məlumatlarını əldə edə bilərsiniz. Budur keçmişampHesab Məlumatı API-lərini necə istifadə edəcəyinizi izah edin:
- ictimai void getAllAccount() {Siyahı sipAccounts = BaseAccountApi. getAllSipAccounts(); }
Hesabın Statusuna nəzarət edin
- İstifadəçilər BaseAccountApi.addStatusListener və BaseAccountApi.removeStatusListener istifadə edərək hesabın vəziyyətinə nəzarət edə bilərlər.
- Budur keçmişampmonitor hesab statusu API-lərindən necə istifadə etmək haqqında.
Hesabın Status Monitorunu işə salın
- şəxsi etibarsız startMonitorAccountChange() {mAccountStatusListener = new AccountStatusListener();
- BaseAccountApi.addStatusListener (“MonitorAccount”, mAccountStatusListener.callback,
- AccountContext.ListenType.SIP_ACCOUNT_STATUS, yanlış); }
Hesabın Status Monitorunu dayandırın
- şəxsi etibarsız stopMonitorAccountChange() {BaseAccountApi.removeStatusListener (mAccountStatusListener.callback);
- mAccountStatusListener.callback.destroy();
- mAccountStatusListener.callback = null; }
AccountStatusListener istifadə edərək Hesaba nəzarət edin
- şəxsi sinif MyAccountStatusListener AccountStatusListener'ı genişləndirir {@Override public void onSipAccountStatusChanged(List) siyahı, SipAccount sip hesabı) {} }; AccountStatusListener mAccountStatusListener = null;
Hesabı yeniləyin
Hesab məlumatları BaseAccountApi.updateSipAccount istifadə edərək yenilənə bilər. Budur keçmişampHesabı Yeniləmə funksiyasından necə istifadə ediləcəyini göstərir:
- ictimai etibarsız yeniləmə hesabı() { BaseAccount hesabı = BaseAccountApi.getAccountbyId(0);
- Log.d(TAG,”hesabı yeniləyin,orijinal:”+hesab);
- if(hesab != null && SipAccount hesab nümunəsi){ account.setAccountName (“Test Hesabı”);
- boolean ret = BaseAccountApi.updateSipAccount((SipAccount) hesabı); if(ret){ Log.d(TAG,”hesabı yeniləyin, dəyişdirildi:”+hesab); } } }
BaseCallApi
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
- Zəng funksiyaları istifadəçilərə zəng etmək, zəngləri bitirmək və zəng statusuna nəzarət etmək imkanı verir.
Zəng et
İstifadəçilər BaseCallApi.makeCalls istifadə edərək zəng edə bilərlər. Budur keçmişampZəng etmək üçün Zəng funksiyası API-dən necə istifadə etmək barədə:
- ictimai etibarsız zəng(String num) { Siyahı yığım Məlumat = yeni ArrayList ();
- DialingInfo dialingInfo = new DialingInfo();
- dialingInfo.setAccountID(BaseAccountApi.getDefaultAccount().getAccountID());
- dialingInfo.setOriginNumber(num);
- dialingInfos.add(dilingInfo);
- DialResults dialResults = BaseCallApi.makeCalls(dilingInfos); int nəticə = dialResults.getDialResult(dilingInfo); }
Zəngi bitirin
- ictimai etibarsız son Zəng (View view) { DemoTətbiq proqramı = (DemoTətbiq) getApplication();
- int lineId = app.getCurLineId();
- BaseCallApi.endCall(lineId); }
Daxil olan zəngə nəzarət edin
- Daxil olan zəngə cavab vermək üçün istifadəçilər əvvəlcə gələn zəngə nəzarət etməlidirlər. Budur keçmişampdaxil olan zəngi izləmək.
Zəng Status Monitorunu işə salın
Xəttin statusunun monitorinqinə başlamaq üçün LINE_STATUS ilə BaseCallApi.addStatusListener istifadə edin və LINE_ID id-si olan zəng xəttinə nəzarət edin.
- şəxsi etibarsız startMonitorCallLines() { mCallStatusListener = yeni MyCallStatusListener();
- BaseCallApi.addStatusListener (“MonitorCall”,
- mCallStatusListener.callback,
- PhoneContext.ListenType.LINE_ID |PhoneContext.ListenType.LINE_STATUS, yanlış); }
Zəng Status Monitorunu dayandırın
- şəxsi etibarsız stopMonitorCallLines() { BaseCallApi.removeStatusListener (mCallStatusListener.callback);
- mCallStatusListener.callback.destroy();
- mCallStatusListener.callback = null; }
CallStatusListener istifadə edərək Zəng statusunu izləyin
- özəl sinif MyCallStatusListener CallStatusListener { @Override'ı genişləndirir
- ictimai etibarsız onlayn status dəyişdirildi (int notifyType, BaseLine bazası, List siyahı) { } @Override
- ictimai etibarsız onLineIdChanged(int oldLineId, int newLineId) { } } şəxsi CallStatusListener mCallStatusListener = null;
Monitor Telefon Qonağı ON/OFF
- Daxil olan zənglərin monitorinqi kimi, telefon monitorinqi Add/RemoveStatusListener istifadə edir. Budur keçmişampçəngəl hadisə vəziyyətinin monitorinqi:
Handset Hook Hadisə Monitorunu işə salın
İstifadəçilər HOOK_EVENT_STATUS ilə BaseCallApi.addStatusListener istifadə edərək telefonun qarmaq hadisəsi vəziyyətinə nəzarət edə bilərlər.
- şəxsi etibarsız startMonitorHandsetChange() { mHookStatusListener = yeni MyHookStatusListener();
- BaseCallApi.addStatusListener (“MonitorHandset”, mHookStatusListener.callback,
- PhoneContext.ListenType.HOOK_EVENT_STATUS, yanlış); }
Telefonun Hook Hadisə Monitorunu dayandırın
- özəl etibarsız stopMonitorHandsetChange() { BaseCallApi.removeStatusListener (mHookStatusListener.callback);
- mHookStatusListener.callback.destroy();
- mHookStatusListener.callback = null; }
CallStatusListener Tətbiq edin
- özəl sinif MyHookStatusListener CallStatusListener'ı genişləndirir { @Override public void onHookEventChanged(int device, boolean isOffHook) { } } private CallStatusListener mHookStatusListener = null;
Zəngi köçürün
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450
- İstifadəçilər transferBlind/transferAttended vasitəsilə kor köçürmə və iştiraklı köçürmə həyata keçirə bilərlər. Cari zəng köçürmədən əvvəl keçirilməlidir.
- Kor transferdən sonra cari zəng birbaşa başa çatır və köçürülən tərəf birbaşa ötürmə hədəfinə zəng edir.
- İştirak edilən köçürmədən sonra cari zəng göstərilən köçürmədən sonra bitməyəcək və telefon köçürməyə zəng edəcək
- hədəf. Transfer hədəfi zəngə cavab vermədikdə, köçürmə dərhal ləğv edilə/tamamlana bilər; telefon bilər
- dərhal köçürün və ya köçürmə hədəfi cavab verdikdən sonra bölün.
- Müvafiq interfeyslər aşağıdakılardır:
- BaseCallApi.transferBlind(int lineId, String number);
- BaseCallApi.transferAttended(int lineId, String number);
- BaseCallApi.transferAttendedCancel(int lineId) ;
- BaseCallApi.endCall(int lineId) ;
- BaseCallApi.transferAttendedEnd(int lineId) ;
- BaseCallApi.transferSplit() ;
Defolt Telefon Proqramı
Grandstream telefon sistemində bir çox telefon proqramlarına icazə verilir və onların hamısı BaseCallApi funksiyalarından istifadə edərək zənglərə nəzarət edə bilər. Bununla belə, yalnız bir telefon proqramı xətt hadisələri və defolt telefon proqramı olan açıq/qapalı hadisələrə cavab verə bilər. Zəngin məntiqini idarə etmək üçün standart telefon proqramı tələb olunur.
Ümumiyyətlə, Sistem Telefonu standart telefon proqramıdır və o, əksər ehtiyacları ödəyə bilər. Bununla belə, istifadəçilər öz telefon proqramlarını da inkişaf etdirə və onu standart telefon tətbiqinə çevirə bilərlər.
Fərdi Telefon Xidmətini həyata keçirin
Öz telefon xidmətinizi fərdiləşdirmək BasePhoneService-in genişləndirilməsini və çəngəlli/qapalı hadisələrin idarə edilməsini tələb edir.
Qeyd
Sistem Telefonu defolt telefon proqramı olmadığı zaman Gs JAR-lar hazırda telefon xəttinin dəyişdirilməsi hadisələri üçün abunəlikləri dəstəkləmir.
Bu o deməkdir ki, fərdiləşdirilmiş proqram defolt telefon proqramı olaraq seçildikdən sonra ona daha zəng etmək üçün Sistem Telefonu xəttindən istifadə etməyə icazə verilmir.
- public void onHookEvent(boolean OffHook) { super.onHookEvent(off-hook); //TODO: bir şey etmək }
- public void onEhsHookEvent(boolean OffHook) { super.onEhsHookEvent(off-hook); //TODO: bir şey etmək }
- public void onLineStateChanged(int lineId, int status) { super.onLineStateChanged(lineId, status); //TODO: bir şey et } /**
- * doğru qaytarılması, bu klik hadisəsinin bu xidmət tərəfindən xərcləndiyini bildirir.
- * Əks halda bu hadisə sistem təcili zəng edəni çağıracaq. */
- ictimai boolean onEmergencyCallButtonClicked(int lineId, int status) { super.onLineStateChanged(lineId, status); //TODO:doğru qaytaran bir şey etmək; } }
Fərdi Telefon Xidmətini qeydiyyatdan keçirin
Defolt Telefon Tətbiqini konfiqurasiya edin
- Hədəf telefon proqramını quraşdırın.
- Sistem Parametrlərini açın və Tətbiqlər bölməsinə keçin? Defolt Tətbiq? Telefon proqramı.
- Hədəf telefon proqramını standart telefon proqramı kimi seçin.
SmsManagerApi
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450
- SMS funksiyaları istifadəçilərə SMS göndərmək/qəbul etmək, həmçinin uğursuz SMS-ləri idarə etmək imkanı verir.
SMS göndərin
Tək kontakta və ya kontaktlar qrupuna SMS göndərmək üçün SmsManagerApi.sendSmsAfterSaved istifadə edin.
- int accountId = 0;
- Sətir nömrələri = “36324”;
- String content = “SMS-i tək birinə sınayın.”;
- long msgId = SmsManagerApi.sendSmsAfterSaved(accountId, numberStr, content);
- if(msgId > -1){ Log.d(TAG,“SMS göndərilir(“ + msgId + “)..”); } Sətir qrupu = ədəd + “_,” + “36325”; məzmun = "Kontaktlar qrupuna SMS sınayın.";
- msgId = SmsManagerApi.sendSmsAfterSaved(accountId, group, numberStr, content);
- if(msgId > -1){ Log.d(TAG,“SMS göndərilir(“ + msgId + “)..”); }
- Göndərmə nəticəsini SmsManagerApi.addSmsListener istifadə edərək izləmək olar.
- SmsManagerApi.addSmsListener(yeni SmsListener() { @Override
- public void onSend(uzun msgId, boolean sendOk) { Log.d(TAG,"Bu əsas mövzudur.");
Log.d(TAG,“sms(“+msgId+“) göndərilir “+(sendOk ? “uğur” : “uğursuz”)); } });
Uğursuz SMS göndərin
Uğursuz SMS-i yenidən göndərmək üçün SmsManagerApi.resendFailedSms istifadə edin.
- boolean ret = SmsManagerApi.resendFailedSms(msg); əgər(ret){
- Log.d(TAG,“SMS yenidən göndərilir(“ + msgId + “)..”); }başqa{ Log.e(TAG,“SMS-lərin yenidən göndərilməsi(“ + msgId + “) uğursuz oldu.”); }
SMS qəbul edin
İstifadəçilər SMS qəbul etmək və SmsContext-də müəyyən edilmiş sabitlərdən istifadə etmək üçün SMSContext.SMS_RECEIVED_ACTION ilə BroadcastReceiver-i qeydiyyatdan keçirə bilərlər. Qəbul edilmiş SMS-in məzmununu əldə etmək üçün SMS qəbulu.
- vəte SmsReceiver smsReceiver;
- şəxsi etibarsızlıq qeydiyyatıSmsReceiver(){
- IntentFilter filter = new IntentFilter();
- filter.addiction(SmsContext.SMS_RECEIVED_ACTION);
- smsReceiver = yeni SmsReceiver();
- registerReceiver(smsReceiver, filter); }
- private void unRegisterSmsReceiver(){ if(smsReceiver != null){ unregisterReceiver(smsReceiver); } } sinif SmsReceiver BroadcastReceiver-i genişləndirir{ @Override
- public void onReceive(Kontekst konteksti, Niyyət niyyəti) { if(SmsContext.SMS_RECEIVED_ACTION.equals(inent.detection())){ long id = intent.getLongExtra(SmsContext.ReceiveSms.ID,-1);
- Sətir nömrəsi = intent.getStringExtra(SmsContext.ReceiveSms.NUMBER);
- int accountId = intent.getIntExtra(SmsContext.ReceiveSms.ACCOUNT_ID,-1);
- String məzmunu = intent.getStringExtra(SmsContext.ReceiveSms.CONTENT); } } }
SMS silin
SMS-i silmək üçün SmsManagerApi.removeSmsById və SmsManagerApi.removeSmsByType istifadə edin. İnterfeyslər aşağıdakı kimi müəyyən edilir:
- ictimai statik int removeSmsById(uzun sms);
- SMS əsasında SMS silin;
- Parametr: smsId, SMS ID;
- Qaytarma dəyəri: int <0: xəta; ≥0: silinmiş sms-lərin sayı
- 0 qaytarın: verilənlər bazasında belə bir mesaj yoxdur; ≥0 qaytarın: uğurla silin.
- ictimai statik int removeSmsByType(int removeType);
- Silinmə növünə görə SMS silin;
- Parametr aradan qaldırılmasıType: 0 – qəbul edilmiş mesajları silin, 1 – göndərilən mesajları silin, 2 – qaralama mesajları silin;
- Qaytarma dəyəri: int <0: xəta; ≥0: silinmiş sms-lərin sayı;
- 0 qaytarın: verilənlər bazasında belə bir mesaj yoxdur; ≥0 qaytarın: uğurla silin.
AudioRouteApi
Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
AudioRouteApi ilə audio marşrutu proqram tərəfindən dəyişdirilə və ya yoxlana bilər.
Audio marşrutunu dəyişin
Audio marşrutunu dəyişmək üçün AudioRouteApi.switchVoiceToXXX istifadə edin. Lütfən, keçid edilən marşrutun məhsul tərəfindən dəstəkləndiyinə əmin olun. Əks halda, keçid uğursuz olacaq.
- AudioRouteApi.switchVoiceToSpeaker();
- AudioRouteApi.switchVoiceToHandset();
- AudioRouteApi.switchVoiceToRJ9Headset();
- AudioRouteApi.switchVoiceToBlueToothHeadset();
- AudioRouteApi.switchVoiceToHdmi();
- AudioRouteApi.switchVoiceToEarphone();
- AudioRouteApi.switchVoiceToUsbHeadset();
Audio marşrutu yoxlayın
- Cari audio marşrutunu yoxlamaq üçün AudioRouteApi.isVoiceOnXXX istifadə edin.
- AudioRouteApi.isVoiceOnSpeaker();
- AudioRouteApi.isVoiceOnHandset();
- AudioRouteApi.isVoiceOnRJ9Headset();
- AudioRouteApi.isVoiceOnBlueToothHeadset();
- AudioRouteApi.isVoiceOnHdmi();
- AudioRouteApi.isVoiceOnEarphone();
- AudioRouteApi.isVoiceOnUsbHeadset();
EHS Qulaqlıq
- setEhsHookStatus: EHS statusunu təyin etmək üçün.
- isEhsOffHook: EHS qulaqlığının bağlı olub olmadığını yoxlamaq üçün.
- isEhsHeadsetConnected: EHS qulaqlığının qoşulub-qoşulmadığını yoxlayın.
Qeyd
- EHS qulaqlığı qarmaqda olduqda, EHS heç bir səs çıxarmayacaq.
- setEhsHookStatus-a zəng edərkən audio marşrut EHS qulaqlıqda olmalıdır, yəni isVoiceOnRJ9Headset() nəticəsi doğru olmalıdır. Həmçinin, setEhsHookStatus-a zəng etdikdən sonra 500ms ərzində başqa audio marşruta keçməyin.
Həmişə Zəngli Dinamik
Əgər konfiqurasiya WebUI? Telefon Parametrləri? Zəng Parametrləri? “Həmişə Dinamikə Zəng et” yoxlanılıb, bu o deməkdir ki, cari səs kanalı dinamikdə olmasa da, gələn zəng dinamiklə birlikdə çalacaq.
Yuxarıda göstərilənləri yerinə yetirmək üçün fərdi telefon proqramı zəng başa çatdıqdan sonra API switchCurrentVoiceWithSpeaker və CurrentVoiceWithoutSpeaker keçidindən istifadə etməlidir.
Aşağıdakı kimiample kodu yeni zəng gələndə.
- özəl sinif MyCallStatusListener CallStatusListener { @Override'ı genişləndirir
- ictimai etibarsız onlayn status dəyişdirildi (int notifyType, BaseLine baza xətti, List siyahı) { yekun Baza xətti = baza xətti;
- if (line.getStatus() == 2) { // 2 əgər (CallSettingApi.isAlwaysRingSpeaker()) { AudioRouteApi.switchCurrentVoiceWithSpeaker();
- başlanğıc xətti(); // zəng çalmağa başlayın }} else { if (daha çox status == 2) { stopTone(); // zəngi dayandır
- AudioRouteApi.switchCurrentVoiceWithoutSpeaker(); }} daha çox status = line.getStatus(); }} Zəng təyini
CallSettingApi
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450
- CallSettingApi ilə konfiqurasiya statusu proqram tərəfindən yoxlana bilər.
DeviceApi
Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
DeviceApi idarəetmə və cihaz haqqında məlumat SDK təmin edir.
Aşağıdakı kimiampsistem məlumatını əldə etmək üçün kod.
- SystemInfo systemInfo = DeviceApi.getSystemInfo();
- String productBaseName = systemInfo.getProductBase();
- String systemVersion = systemInfo.getSystemVersion();
CallToneApi
Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575. Aşağıda əlaqəli CallToneApi interfeysləri verilmişdir:
- //Tonun çalındığını yoxlayın
- ictimai statik boolean isAnyToneInPlay();
- //Zing melodiyasının çalındığını yoxlayın
- ictimai statik boolean isRingToneInPlay();
- //Yığma tonunun çalındığını yoxlayın
- ictimai statik boolean isDialToneInPlay();
- //Dtmf tonunun çalındığını yoxlayın
- ictimai statik boolean isDtmfToneInPlay();
- //Bütün tonu dayandırın
- ictimai statik etibarsız stopAllTone();
- //Bütün zəng melodiyalarını dayandırın
- ictimai statik etibarsız stopRingtone();
- //Dtmf tonunu çalmağa başlayın
- ictimai statik etibarsız startDtmfTone(int keyValue);
- //DTMF tonunu çalmağı dayandırın
- ictimai statik boşluq stopDtmfTone(int keyValue);
- //Zəng gözləmə tonunu çalmağa başlayın
- ictimai statik etibarsız startCallWaitingTone();
- //Zəng gözləmə tonunu çalmağı dayandırın
- ictimai statik etibarsız stopCallWaitingTone();
- //Rəng səsini çalmağa başlayın
- ictimai statik etibarsız startRingbackTone();
- //Çıxılan zəng tonunu dayandırın
- ictimai statik etibarsız stopRingbackTone();
- //Məşğul tonu çalmağa başlayın
- ictimai statik etibarsız startBusyTone();
- //Məşğul ton çalmağı dayandırın
- ictimai statik boşluq stopBusyTone();
- //Yığma tonunu çalmağa başlayın
- ictimai statik etibarsız startDialTone();
- //Yığma tonunu çalmağı dayandırın
- ictimai statik boşluq stopDialTone();
- //İkinci yığım tonunu çalmağa başlayın
- ictimai statik etibarsız startSecondDialTone();
- //İkinci yığım tonunu çalmağı dayandırın
- ictimai statik boşluq stopSecondDialTone();
- //Oxumağa başlayın təsdiq tonu
- ictimai statik etibarsız startConfirmTone();
- //Oxumağı dayandırın təsdiq tonu
- ictimai statik etibarsız stopConfirmTone();
- //Sifariş tonunu çalmağa başlayın
- ictimai statik etibarsız startReorderTone();
- //Oxumağı dayandırın
- ictimai statik etibarsızlıq stopReorderTone();
- //Uyğun zəng melodiyasını xəttə uyğun çalın
- ictimai statik etibarsız startRingtone(int lineId);
- //Sistem zəng melodiyasını çalmağa başlayın
- ictimai statik etibarsız playSystemRingtone();
- //DND rejimində zəng melodiyasını çalmağa başlayın
- ictimai statik boşluq playDndTone();
- //Oxunmamış səs poçtu olduqda yığım tonunu çalmağa başlayın
- ictimai statik etibarsız startVMDialTone();
- //Oxunmamış səsli məktub olduqda yığım tonunu çalmağı dayandırın
- ictimai statik boşluq stopVMDialTone();
- //Avtomatik cavab tonunu çalmağa başlayın
- ictimai statik etibarsız startAutoAnswerTone();
- //Avtomatik cavab tonunu çalmağı dayandırın
- ictimai statik etibarsız stopAutoAnswerTone();
- //Hazırda çalınan tonun növünü alır
- ictimai statik int getCurToneType();
Gs Core SDK
- Bu SDK-lar init ApiClient olmadan istifadə edilə bilər. Bu SDK-lar GsDevStateManager kimi XXXManager kimi adlandırılır.
Cihaz meneceri
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
Cihazın bağlı vəziyyətini əldə edin.
- // qoşulmuş 3.5 mm qulaqlıq cihazıdır
- GsDevStateManager.instance().isDeviceConnected(GsDevStateManager.NAME_EARPHONE);
- // qoşulmuş cihazdır
- GsDevStateManager.instance().isDeviceConnected(GsDevStateManager.NAME_EHS);
- // HDMI cihazı qoşulub
- GsDevStateManager.instance().isDeviceConnected(GsDevStateManager.NAME_HDMI);
- //Cihazda HDMI qoşulub
- GsDevStateManager.instance().isDeviceConnected(GsDevStateManager.NAME_HDMI_IN);
- // qoşulmuş usb qulaqlıq cihazıdır
- GsDevStateManager.instance().isDeviceConnected(GsDevStateManager.NAME_USB_HEADSET);
Cihazı yenidən başladın
- GsDevStateManager.instance().reboot();
DND meneceri
Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
- DndManager.instance().setDndOn();
- DndManager.instance().setDndOff();
- DndManager.instance().isDndOn();
Cihaz MAC əldə edin
- GsDevStateManager.instance().getDeviceMac();
ƏLAQƏ
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575. android.content.ContentResolver artıq kontaktları işlətmək üçün Yarat-Oxu-Yenilə-Sil (CRUD) API-lərini təqdim etmişdir.
- API məlumatı üçün aşağıdakı linklərə müraciət edin:
- https://developer.android.google.cn/reference/android/content/ContentProvider
- Əlaqələr bazası haqqında ətraflı məlumat üçün müraciət edin:
- https://developer.android.google.cn/reference/android/provider/ContactsContract.
- CRUD kontaktlarına android.content.ContentResolver istifadə edərək, o, ehtiyacların çoxunu ödəyə bilməlidir.
ƏHƏMİYYƏTLİ
Lütfən, CRUD ilə əlaqə qurmazdan əvvəl Grandstream tərəfindən dəstəklənən məhsullara tətbiq edilən dəyişikliklər üçün aşağıdakı məzmunu oxuduğunuzdan əmin olun.
Bəzi yeni sütunlar və bəzi ehtiyat sütunlar mühüm məlumatları saxlamaq üçün verilənlər bazası cədvəlində istifadə olunur. Bu sütunların açarları və sabit dəyərləri com.gs.contacts.context.ContactsContext-də müəyyən edilir. Ətraflı məlumat üçün gsApiExternal-en-ə müraciət edin
ContactsContract.Data üçün dəyişikliklər
ContactsContract.Data kontaktlar verilənlər bazası cədvəlindəki dəyişiklik budur:
Açar | Növ | Təsvir |
ContactsContext.ContactsItem#ITEM_ACCOUNT_ID | BÜTÜN (uzun) | Xüsusi istifadə. |
Əlaqə Contract.Data
ContactsContract.RawContacts üçün dəyişikliklər
- ContactsContract.RawContacts kontaktlar verilənlər bazası cədvəlindəki dəyişiklik budur:
Açar | Növ | Təsvir |
ContactsContext.ContactsItem#ITEM_SORT_KEY_T9 | MƏTN | Yeni sütun. |
ContactsContext.ContactsItem#ITEM_SORT_KEY_T9_FL | MƏTN | Yeni sütun. |
ƏlaqələrMüqavilə.RawContacts
ContactsContract.Contacts#CONTENT_FILTER_URI üçün dəyişikliklər
Android-in yerli filtrinə əlavə olaraq qeyri-səlis axtarış funksiyası da əlavə edilib. Qeyri-səlis axtarışda istifadəçilər “123” əvəzinə “123” və ya “123456” kimi nömrəyə daxil edilmiş 0123 ilə bütün uyğun gələn nəticələri əldə etmək üçün “nömrə=123” kimi şərtlə sorğu verə bilərlər. Bu filtr ContactsContext.SearchSnippets.FUZZY_KEY parametrini aşağıdakı kimi təyin etməklə aktivləşdirilə bilər:
- Uri.Builder qurucusu = ContactsContract.Contacts.CONTENT_FILTER_URI.buildUpon();
- builder.appendPath(sorğu);
- builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId));
- builder.appendQueryParameter(ContactsContract.SearchSnippets.DEFERRED_SNIPPETING_KEY,"1");
- builder.appendQueryParameter(com.gs.contacts.context.ContactsContext.SearchSnippets.FUZZY_KEY,”1”);
- Uri uri = builder.build();
- Kursor kursoru = mContext.getContentResolver().query(uri, null, null, null, null); }
Kontakt yaradın
Kontakt əlavə edilə bilər və bütün parametrlər manipulyasiya edilə bilər. Budur keçmişample:
- ictimai etibarsız əlaqə əlavə et (Sətrin adı, Sim nömrəsi, uzun hesab identifikatoru) {
- əməliyyat
- = yeni ArrayList ();
- int rawContactInsertIndex = ops.size();
- ops.add(ContentProviderOperation
- .newInsert(ContactsContract.RawContacts.CONTENT_URI)
- .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
- .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
- .withYieldAllowed(doğru).build());
- ops.add(ContentProviderOperation
- .newInsert(ContactsContract.Data.CONTENT_URI)
- .withValue(ContactsContext.ContactsItem.ITEM_ACCOUNT_ID, hesablanmış)
- .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,
- rawContactInsertIndex)
- .withValue(ContactsContract.Data.MIMETYPE,
- ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
- .withValue(ContactsContract.CommonDataKinds.StructuredName
- .DISPLAY_NAME, ad)
- .withYieldAllowed(doğru).build());
- ops.add(ContentProviderOperation
- .newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
- .withValueBackReference(ContactsContract.CommonDataKinds.Phone
- .RAW_CONTACT_ID,rawContactInsertIndex)
- .withValue(ContactsContract.CommonDataKinds.Phone.MIMETYPE,
- ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
- .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
- ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
- .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, nömrə)
- .withYieldAllowed(doğru).build());
- cəhd edin { content solutionr.applyBatch(ContactsContract.AUTHORITY, əməliyyatlar); } tutmaq (İstisna e) { e.printStackTrace(); } }
Kontaktı yeniləyin
Kontakt əlavə edilə bilər və bütün parametrlər manipulyasiya edilə bilər. Budur keçmişample:
- ictimai etibarsız yeniləmə kontaktı (uzun rawContactId, String adı) {
- ArrayList əməliyyat
- = yeni ArrayList ();
- ops.add(ContentProviderOperation
- .newUpdate(ContactsContract.Data.CONTENT_URI)
- .withSelection(ContactsContract.Data.RAW_CONTACT_ID+“=?”,
- yeni String[]{rawContactId+“”})
- .withValue(ContactsContract.CommonDataKinds.StructuredName
- .DISPLAY_NAME, ad) .build());
- cəhd edin { content solutionr.applyBatch(ContactsContract.AUTHORITY, əməliyyatlar);
- } tutmaq (İstisna e) { e.printStackTrace(); } }
Kontaktları oxuyun
Budur keçmişampkontaktları oxumaq və bütün parametrləri manipulyasiya etmək:
- public void get contacts() { String[] proyeksiya = new String[]{
- ContactsContext.ContactsItem.ITEM_CONTACT_ID_IN_DATA,
- ContactsContext.ContactsItem.ITEM_ACCOUNT_ID,
- ContactsContext.ContactsItem.ITEM_PHONE_NUMBER,
- ContactsContext.ContactsItem.ITEM_DISPLAY_NAME }; Kursor kursoru = məzmun həlledicisi
- .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI
- , proyeksiya, null, null, null);
- if(kursor != null) { while (cursor.moveToNext()) { long contactId = cursor.getLong
- (cursor.getColumnIndex(ContactsContext.ContactsItem
- .ITEM_CONTACT_ID_IN_DATA));
- long accountId = cursor.getInt(cursor.getColumnIndex
- (ContactsContext.ContactsItem.ITEM_ACCOUNT_ID));
- Sətir nömrəsi = cursor.getString(cursor.getColumnIndex
- (ContactsContext.ContactsItem.ITEM_PHONE_NUMBER));
- Sətir adı = cursor.getString(cursor.getColumnIndex
- (ContactsContext.ContactsItem.ITEM_DISPLAY_NAME)); } cursor.close(); } }
Kontaktı silin
Aşağıdakı keçmişdirampkontaktları silmək üçün:
- public void deleteContactById(uzun əlaqə) { ArrayList əməliyyat = yeni ArrayList ();
- ops.add(ContentProviderOperation
- .newDelete(ContactsContract.RawContacts.CONTENT_URI)
- .withSelection(ContactsContract.RawContacts.CONTACT_ID +”=”+contactId, null) .build());
- ops.add(ContentProviderOperation
- .newDelete(ContactsContract.Data.CONTENT_URI)
- .withSelection(ContactsContract.Data.CONTACT_ID
- + “=” + əlaqə saxlanıldı, null) .build());
- cəhd edin { content solutionr.applyBatch(ContactsContract.AUTHORITY, əməliyyatlar);
- } tutmaq (İstisna e) { e.printStackTrace(); } }
ZƏNG QAYDLARI
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450, GSC3574, GSC3575.
- android.content.ContentResolver artıq fəaliyyət kataloqları üçün Yarat-Oxu-Yenilə-Sil (CRUD) API-lərini təqdim etmişdir.
- API məlumatı üçün aşağıdakı linkə müraciət edin:
- https://developer.android.google.cn/reference/android/content/ContentProvider
- Kataloq bazası haqqında ətraflı məlumat üçün müraciət edin:
- https://developer.android.google.cn/reference/android/provider/CallLog
- Ümumiyyətlə, BaseCallApi-də API-lərə zəng etdikdən sonra zəng qeydləri defolt olaraq əlavə olunacaq və ya dəyişdiriləcək. Gs JARS müstəqil calllog funksiyaları üçün əlavə API təmin etmir. CRUD kataloqlarına android .content.ContentResolver-dən istifadə ehtiyacların çoxunu ödəyə bilməlidir.
ƏHƏMİYYƏTLİ
Lütfən, CRUD zəng qeydlərindən əvvəl Grandstream tərəfindən dəstəklənən məhsullara tətbiq edilən dəyişikliklər üçün aşağıdakı məzmunu oxuduğunuzdan əmin olun. Bəzi yeni sütunlar və bəzi ehtiyat sütunlar verilənlər bazası cədvəlində mühüm məlumatları saxlamaq üçün istifadə olunur. Bu sütunların açarları və sabit dəyərləri com.gs.calllog.context.CallLogContext-də müəyyən edilir. Ətraflı məlumat üçün gsApiExternal-en-ə müraciət edin.
CallLog.Calls üçün dəyişikliklər
CallLog.Calls-a tətbiq edilən dəyişikliklər aşağıdakı cədvəldə verilmişdir:
Açar | Növ | Təsvir |
CallLogContext.CallLogItem#ITEM_ACCOUNT | İNTEGER(uzun) | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_CALL_MODE | BÜTÜN(int) | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_MEDIA_TYPE | BÜTÜN(int) | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_NUMBER_ORIGINAL | MƏTN | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_CONTACT_CACHE_NAME | MƏTN | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_END_TIME | MƏTN | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_IS_IN_CONFERENCE | BÜTÜN(int) | Yeni sütun. |
CallLogContext.CallLogItem#ITEM_GROUP_ID | İNTEGER(uzun) | Yeni sütun. |
Qeyd
CallLog.Calls-da ictimai statik metodlar tövsiyə edilmir, gözlənilməz nəticələr əldə edə bilərsiniz.
Zəng jurnalı yaradın
Zəng jurnalı zənglə sıx əlaqəli olduğundan, zəng etmək və zəng jurnalını defolt olaraq saxlamaq üçün BaseCallApi istifadə etməyi tövsiyə edirik. Budur keçmişample:
- public void addCalllog(String adı,String nömrəsi,uzun hesab ID) { ArrayList əməliyyat
- = yeni ArrayList ();
- ops.add(ContentProviderOperation.newInsert(CallLogContext.CALL_LOG_URI)
- .withValue(CallLogContext.CallLogItem.ITEM_ACCOUNT, hesaba alınmış)
- .withValue(CallLogContext.CallLogItem.ITEM_CACHE_NAME, ad)
- .withValue(CallLogContext.CallLogItem.ITEM_CALL_MODE,
- PhoneContext.CallMode.SIP_CALL)
- .withValue(CallLogContext.CallLogItem.ITEM_START_TIME,
- System.currentTimeMillis())
- .withValue(CallLogContext.CallLogItem.ITEM_IS_IN_CONFERENCE,false)
- .withValue(CallLogContext.CallLogItem.ITEM_NUMBER_ORIGINAL,nömrə)
- .withValue(CallLogContext.CallLogItem.ITEM_NUMBER,nömrə)
- .withValue(CallLogContext.CallLogItem.ITEM_CALL_TYPE,
- CallLogContext.CallLogType.TYPE_MISSED)
- .withValue(CallLogContext.CallLogItem.ITEM_DURATION, 0)
- .withValue(CallLogContext.CallLogItem.ITEM_MEDIA_TYPE,
- CallLogContext.MediaType.AUDIO) .build());
- cəhd edin { contentResolver.applyBatch(CallLog.AUTHORITY, əməliyyatlar);
- } tutmaq (İstisna e) { e.printStackTrace(); } }
Zəng qeydlərini oxuyun
Aşağıdakı keçmişdirampContentResolver istifadə edərək zəng qeydlərini oxuyun
- public void getCallLogs() { Kursor kursoru = məzmun həlledicisi.query(CallLogContext.CALL_LOG_URI, null , null, null, null);
- StringBuilder res = yeni StringBuilder(“”);
- if(kursor!= null){
- if(cursor.moveToFirst()){do{long calllogId = cursor.getLong(
- cursor.getColumnIndex(CallLogContext.CallLogItem.ITEM_ID));
- String cacheName = cursor.getString(kursor.
- getColumnIndex(CallLogContext.CallLogItem.ITEM_CACHE_NAME));
- int mediaType = cursor.getInt(kursor.
- getColumnIndex(CallLogContext.CallLogItem.ITEM_MEDIA_TYPE));
- }while (cursor.moveToNext()); } cursor.close(); } }
Zəng qeydlərini yeniləyin
Budur keçmişampContentResolver istifadə edərək zəng qeydlərini yeniləmək üçün:
- ictimai etibarsız yeniləməCalllogById(uzun zəngId) {
- ArrayList əməliyyat
- = yeni ArrayList ();
- ops.add(ContentProviderOperation
- .newUpdate(CallLogContext.CALL_LOG_URI)
- .withSelection(CallLogContext.CallLogItem.ITEM_ID+“=”+callId, null)
- .withValue(CallLogContext.CallLogItem.ITEM_DURATION,1000)
- .build()); cəhd {
- məzmun həlledicisi.applyBatch(CallLog.AUTHORITY, əməliyyatlar);
- } tutmaq (İstisna e) { e.printStackTrace(); } }
Zəng qeydlərini silin
Budur keçmişampContentResolver istifadə edərək zəng qeydlərini silmək üçün:
- ictimai etibarsız silinCalllogById(uzun zəngId) {
- ArrayList əməliyyat
- = yeni ArrayList ();
- ops.add(ContentProviderOperation
- .newDelete(CallLogContext.CALL_LOG_URI)
- .withSelection(CallLogContext.CallLogItem.ITEM_ID+“=”+callId, null)
- .build ());
- cəhd edin { content solutionr.applyBatch(CallLog.AUTHORITY, əməliyyatlar);
- } tutmaq (İstisna e) {
- e.printStackTrace(); } }
LED
Android standart interfeysində bildiriş yalnız LED istifadə etmək üsuludur. Budur keçmişampLED ilə bildirişlərdən istifadə etmək üçün:
- int rəng = 0xFF00FF00;
- int on Ms = 1000;
- int off Ms = 1000;
- NotificationManager meneceri = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- Bildiriş bildirişi = null;
- bildiriş = yeni Notification.Builder(bu)
- .setContentTitle("Bu məzmun başlığıdır")
- .setContentText("Bu məzmun mətnidir")
- .setWhen(System.currentTimeMillis())
- .setSmallIcon(R.mipmap.ic_launcher)
- .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
- .setLights(rəngli, açıq-aydın, offMs)
- .build();
- menecer.notify(1, bildiriş);
Lütfən, GXV3470, GXV3480, GXV3450, GSC3574 və GSC3575-də LED üçün dəstəklənən rənglərin və tezliklərin siyahısını tapın. Rəng və ya tezlik parametri cihaz tərəfindən dəstəklənmirsə, cihaz avtomatik olaraq standart rəngi və ya ən yaxın tezliyi seçəcək.
Məhsul | GXV3470 | GXV3480 | GXV3450 | GSC3574 | GSC3575 |
Qırmızı LED | Yandır/Söndür | Yandır/Söndür | Yandır/Söndür | Yandır/Söndür | Yandır/Söndür |
Yaşıl LED | Yandır/Söndür | Yandır/Söndür | Yandır/Söndür | Yandır/Söndür | Yandır/Söndür |
Mavi LED | Yoxdur | Yoxdur | Yoxdur | Yoxdur | Yoxdur |
Tezliyə davam edin | Xanım haqqında: 1000,
off Xanım: 0 |
Xanım haqqında: 1000,
off Xanım: 0 |
Xanım haqqında: 1000,
off Xanım: 0 |
Xanım haqqında: 1000,
off Xanım: 0 |
Xanım haqqında: 1000,
off Xanım: 0 |
Yavaş sıçrama tezliyi |
Xanım haqqında: 1000, off Xanım: 3000 |
Xanım haqqında: 1000, off Xanım: 3000 |
Xanım haqqında: 1000, off Xanım: 3000 |
Xanım haqqında: 1000, off Xanım: 3000 |
Xanım haqqında: 1000, off Xanım: 3000 |
Sürətli sıçrama tezliyi |
Xanım haqqında: 1000, off Xanım: 1000 |
Xanım haqqında: 1000, off Xanım: 1000 |
Xanım haqqında: 1000, off Xanım: 1000 |
Xanım haqqında: 1000, off Xanım: 1000 |
Xanım haqqında: 1000, off Xanım: 1000 |
LED Rəngləri və Tezlikləri
GsLightsManager
- Dəstəklənən Məhsullar: GXV3470, GXV3480, GXV3450.
- Bildirişlə LED-ə nəzarət istisna olmaqla, GsLightsManager LED-i sərbəst idarə etmək üçün funksiyalar təmin etdi. Aşağıdakılar metod tərifləridir:
- ictimai etibarsız açıq xüsusi (int color, int shineType);
- public void close custom();
- Parametrlər:
- shineType: sürətli sıçrayış, yavaş sıçrayış və ya davam etdirərək parıltı növünü idarə edin.
- rəng: açmaq üçün LED rəngi. Məhsula görə, qırmızı, yaşıl və ya mavi rəngləri dəstəkləyə bilər.
LedApi
Dəstəklənən Məhsullar: GSC3574, GSC3575.
LedApi aşağıdakı üsullardan istifadə edərək GSC3574/75-də LED-i idarə etməyə imkan verir:
- public void openTopCustom(LedApi.Color color, LedApi.ShineType shineType);
- public void closeTopCustom();
- public void openSideCustom(LedApi.Color color, LedApi.ShineType shineType);
- public void closeSideCustom();
Parametrlər:
- shineType: proqramın təyin etmək istədiyi fərdi LED-in parıldayan növünə nəzarət edir (məsələn, Yüksək Sürətli Yanıb-sönmə).
- rəng: tətbiqin təyin etmək istədiyi fərdi LED-in rənginə nəzarət edir (Qırmızı və ya Yaşıl).
Proqramlaşdırıla bilən açarlar
- Dəstəklənən Məhsullar: GXV3450
- Proqramlaşdırıla bilən açarların API-si genişləndirmə modulunun klik hadisələrini və s. izləmək üçün istifadə edilə bilər.
Monitor Genişləndirilməsi Modulu Klik Hadisəsi
- İstifadəçilər MpkApi.addStatusListener və MpkApi.removeStatusListener istifadə edərək genişləndirmə modulunun klik hadisəsini izləyə bilərlər.
- Budur keçmişampHadisə API-lərini klikləmək üçün monitor genişləndirmə modulundan necə istifadə etmək barədə.
Ex Click Event Monitor-u işə salın
- şəxsi etibarsız initExtClickListener() { mMpkStatusListener = yeni MpkStatusListener();
- MpkApi.addStatusListener (“ExtEvent”,
- mMpkStatusListener.callback,
- MpkContext.ListenType.EXT_EVENT); }
Əlavə Klik Hadisə Monitorunu dayandırın
- private void removeExtClickListener() { MpkApi.removeStatusListener (mMpkStatusListener.callback);
- mMpkStatusListener.destroy();
- mMpkStatusListener = null ; }
MpkStatusListener istifadə edərək Ext Hadisəni izləyin
- özəl sinif MyMpkStatusListener, MpkStatusListener { @Override'ı genişləndirir
- ictimai void onExtItemClick(MpkEntity obyekti) { } }; MpkStatusListener mMpkStatusListener = null;
API vasitəsilə tapşırıqlar panelində idarəetmə parametrləri düyməsi
- Cihazın tapşırıqlar panelində parametrlər düyməsinin göstərilib-göstərilməməsinə nəzarət etmək üçün istifadəçilər onu gizlətmək/göstərmək və ekran statusunu əldə etmək üçün aşağıdakı API əmrlərindən istifadə edə bilərlər.
Parametrlər düyməsini gizlətmək üçün yayım göndərin
- Niyyət niyyəti = yeni Niyyət (“com.android.systemui.settings_button.visibility”);
- intent.putExtra("görünürlük", yanlış);
- yayım göndərmək (niyyət);
Ekran parametrləri düyməsinə yayım göndərin
- Niyyət niyyəti = yeni Niyyət (“com.android. systemui.settings_button.visibility”);
- intent.putExtra (“görünürlük”, doğru);
- yayım göndərmək (niyyət);
Gizlətmə statusunu əldə edin (1 – ekran; 0 – gizlət)
- Settings.Global.getInt(getContentResolver(), “settings_button_visibility”, 0))
RoomPanelApi
Dəstəklənən Məhsullar: GSC3574, GSC3575.
RoomPanelApi aşağıdakı üsullardan istifadə edərək Konfrans Otaqları haqqında məlumat əldə etməyə və dəyişdirməyə imkan verir:
- ictimai statik boolean startConfReservation(int time);
- ictimai statik boolean extensionConfReservation(int time);
- ictimai statik boolean endConfReservation();
- ictimai statik ConfReservation getConfReservationInfo();
“Vaxt” parametri (dəqiqələrlə) konfransın başlama vaxtı və ya uzadılmış vaxta istinad edə bilər.
AİB İLƏ TƏTBİQLƏRİ YARATIN
- Grandstream Android cihazlarında proqramların hazırlanması cihazın şəbəkəyə qoşulmasını tələb edir.
- Bu, birbaşa Android cihazına USB bağlantısından istifadə etməklə inkişafdan fərqlidir.
Cihazda Developer Rejimini aktivləşdirin
- Zəhmət olmasa cihazın altında developer rejimini aktiv edin web UI. Cihaza daxil olun web UI və Parametrlər?Sistem təhlükəsizliyi?Tərtibatçı rejiminə keçin.
ADB Connect
- Cihaza qoşulmaq üçün “adb connect IP” əmrindən istifadə edin. məsələnample, adb connect 192.168.100.1
Cihazda Sazlamaya icazə verin
- Uğurlu "adb connect"dən sonra cihaz sazlamaya icazə vermək üçün sorğu göstərəcək. Davam etmək üçün “OK” seçin.
- Növbəti dəfə cihaz eyni kompüterə qoşulduqda dialoqun yenidən görünməməsi üçün “Həmişə bu kompüterdən icazə verin”i yoxlamaq tövsiyə olunur.
ADB Connect Statusunu yoxlayın
Adb qoşulma statusunu yoxlamaq üçün “adb devices” əmrindən istifadə edin. Aşağıdakı məzmun göstərilirsə, bu, əlaqənin uğurlu olduğunu bildirir:
- Əlavə edilmiş cihazların siyahısı
- 192.168.100.1:5555 de
ADB Bağlantısını kəsin
- Bütün cihazları ayırmaq üçün “adb disconnect” əmrindən istifadə edin.
Qeyd
Eyni anda yalnız bir PC-nin cihaza qoşulmasına icazə verilir.
API DEMO
- SDK paketində istifadəçilər ApiDemo adlı GXV34x0 və GSC3574/75 SDK API-lərindən istifadə edərək Demo Proqramı tapa bilərlər.
DƏYİŞDİRMƏ
Bu bölmə GXV3470/GXV3480/GXV3450/GSC3574/GSC3575 üçün SDK Çərçivə Xidməti təlimatının əvvəlki versiyalarından əhəmiyyətli dəyişiklikləri sənədləşdirir. Yalnız əsas yeni xüsusiyyətlər və ya əsas sənəd yeniləmələri burada verilmişdir. Düzəlişlər və ya redaktə üçün kiçik yeniləmələr burada sənədləşdirilmir.
Firmware Version 1.3.1
Məhsulun adı: GSC3574 / GSC3575
- GXV3574xx SDK-dan miras qalmış GSC75/1.0.1.1 SDK (34) üçün əlavə dəstək.
- Yenilənmiş SDK başlanğıc məntiqi: XXXApi-yə zəng etmək onu ilk istifadə üçün avtomatik işə salacaq. [APİ-lərdən istifadə edin]
- GSC357x üçün xüsusi API əlavə edildi: RoomPanelApi. [RoomPanelApi]
- GsLightManager LedApi ilə əvəz olundu. [LedApi]
- Android üçün əlavə dəstək. content.ContentResolver GS fərdi kontaktlarını və zəng qeydlərini sorğulamaq üçün. [ƏLAQƏ] [ZƏNG QAYDLARI]
- BaseAccountApi, BaseCallApi, BaseLineApi, DeviceApi, CallToneApi, AudioRouteApi,
- GsDevStateManager, DndManager. [BaseAccountApi] [BaseCallApi] [BaseLineApi] [DeviceApi] [CallToneApi] [AudioRouteApi] [GsDevStateManager] [DndManager]
Firmware Version 1.0.1.29
Məhsulun adı: GXV3480 / GXV3450 / GXV3470
- API vasitəsilə Tapşırıq Panelindəki Parametrlər düyməsini silmək üçün dəstək əlavə edildi. [APİ VİA TASKBARINDA NƏZARƏT PARAMETRİ DÜĞMƏSİ]
DƏSTƏKLƏNƏN CİHAZLAR
- Aşağıdakı cədvəldə bu təlimatda sadalanan SDK API-lərini dəstəkləyən Grandstream məhsulları göstərilir:
Model | Dəstəklənir | Mikroproqram |
GXV3470 | Bəli | 1.0.1.15 və ya daha yüksək |
GXV3480 | Bəli | 1.0.1.15 və ya daha yüksək |
GXV3450 | Bəli | 1.0.1.15 və ya daha yüksək |
GSC3574 | Bəli | 1.0.1.7 və ya daha yüksək |
GSC3575 | Bəli | 1.0.1.7 və ya daha yüksək |
Sənədlər / Resurslar
![]() |
GRANDSTREAM GSC3574 Android Çərçivə Xidməti [pdf] İstifadəçi təlimatı GXV3470, GXV3480, GXV3450, GSC3575, GSC3574 Android Çərçivə Xidməti, GSC3574, Android Çərçivə Xidməti, Çərçivə Xidməti, Xidmət |