Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Tüm platformlar (Android, iOS vb.)  için telefon çağrı durumunu yakalamak
#1
Merhaba,
Tüm platformlar (Android, iOS vb.)  için telefon çağrı durumu IFMXPhoneDialerService interface'i ile öğrenilebilir.
Örnek bir uygulama ile IFMXPhoneDialerService servisinin cihazımız tarafından desteklenip desteklenmediğini kontrol ederek, çağrı durumunun nasıl yakalanabileceğine bakalım.

Örneğimiz için Uses bölümüne aşağıdaki referansları ekleyelim.

uses
 FMX.PhoneDialer, FMX.Platform;

Daha sonra IFMXPhoneDialerService tipide bir tanımlama yapalım.
Örneğin,

 private: 
  TelefonServisi: IFMXPhoneDialerService;

Formun OnCreate olayına aşağıdaki kodları yazalım.


procedure TForm1.FormCreate(Sender: TObject);
begin
  TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(TelefonServisi));
  if Assigned(TelefonServisi) then
    TelefonServisi.OnCallStateChanged := SetArsOnCallStateChanged
  else
    ShowMessage('Telefon servis desteği yok');
end;

Yukarıdaki kod yapısında Cihazımız tarafından Servisin desteklenip desteklenmediğini kontrol ettik ve Cihazımızın bu servisi desteklemesi durumunda interface'te yer alan OnCallStateChanged olayına oluşturduğunuz bir metodu atadık. Böylece Servisin OnCallStateChanged olayı tetiklendiğinde bizim tanımlayacağımız SetArsOnCallStateChanged  olayının çalışmasını sağladık.  

Son olarak SetArsOnCallStateChanged isminde bir procedure tanımlayarak, uygulamamızı sonlandıralım.

procedure TForm1.SetArsOnCallStateChanged(const ACallID: String; const ACallState: TCallState);
Begin
  case ACallState of
    TCallState.None:
      ; // çağrı yok
    TCallState.Connected:
      ; // çağrı alındı
    TCallState.Incoming:
      ; // çağrı var
    TCallState.Dialing:
      ; // aranıyor
    TCallState.Disconnected:
      ; // çağrı sonlandı
  end;
End;

Yukarıdaki procedure'de yer alan çağrı durumlarında begin-end blokları oluşturarak istediğiniz işlemi yapabilirsiniz.

İyi çalışmalar
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#2
hmm hali hazırda android studio ile yaptığım bir uygulamam var,
aynı uygulamayı daha iyi bir görselle Delphiye taşıyabilir miyim acaba,

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#3
Neden olmasın?
Başlamak bitirmenin yarısıdır. Siz başlayın takıldığınız yerde biz de yardımcı olmaya çalışalım.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#4
(09-08-2016, Saat: 14:02)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlNeden olmasın?
Başlamak bitirmenin yarısıdır. Siz başlayın takıldığınız yerde biz de yardımcı olmaya çalışalım.

Teşekkürler, Sizin kitap nasıl gidiyor Fesih Bey,
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#5
Ne yaptımsa çağrı durumlarını yakalayamadım. cihaz desteklemese uyarı vermesi lazım ama oda gelmiyor nerde yanlış yapıyorum acaba ?



procedure TForm2.FormShow(Sender: TObject);
begin
telip.Text:=GetIPAddress;
TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(TelefonServisi));
if Assigned(TelefonServisi) then
begin
TelefonServisi.OnCallStateChanged := aramadurum;

end else ShowMessage('Telefon servis desteği yok');
end;



procedure TForm2.aramadurum(const ACallID: String;
const ACallState: TCallState);

var outText: String;
Begin
case ACallState of
TCallState.None: outText := 'Bosta';
TCallState.Connected: outText := 'Bagli';
TCallState.Incoming: outText := 'Gelen Cagri :' + ACallID;
TCallState.Dialing: outText := 'Ariyor';
TCallState.Disconnected: outText := 'Baglanti Kesildi';
end;

label5.Text:=outText;

end;
Cevapla
#6
İzinden olabilir mi?
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#7
tüm izinleri verdim eksik olmasın fazla olsun diye Smile

Deneme yaptığım cihaz ise Samsung S6 edge plus android 6.0.1


Kod:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="11" />
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_CHECKING_PROPERTIES" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
   <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
   <uses-permission android:name="android.permission.ADD_VOICEMAIL" />
   <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
   <uses-permission android:name="android.permission.BATTERY_STATS" />
   <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
   <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
   <uses-permission android:name="android.permission.BIND_INPUT_METHOD" />
   <uses-permission android:name="android.permission.BIND_VPN_SERVICE" />
   <uses-permission android:name="android.permission.BIND_REMOTEVIEWS" />
   <uses-permission android:name="android.permission.BIND_TEXT_SERVICE" />
   <uses-permission android:name="android.permission.BIND_APPWIDGET" />
   <uses-permission android:name="android.permission.BLUETOOTH" />
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
   <uses-permission android:name="android.permission.BRICK" />
   <uses-permission android:name="android.permission.BROADCAST_STICKY" />
   <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
   <uses-permission android:name="android.permission.BROADCAST_SMS" />
   <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
   <uses-permission android:name="android.permission.CALL_PHONE" />
   <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
   <uses-permission android:name="android.permission.CAMERA" />
   <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
   <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
   <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
   <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
   <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
   <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
   <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
   <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
   <uses-permission android:name="android.permission.DELETE_PACKAGES" />
   <uses-permission android:name="android.permission.DEVICE_POWER" />
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
   <uses-permission android:name="android.permission.DIAGNOSTIC" />
   <uses-permission android:name="android.permission.DUMP" />
   <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
   <uses-permission android:name="android.permission.FACTORY_TEST" />
   <uses-permission android:name="android.permission.FLASHLIGHT" />
   <uses-permission android:name="android.permission.FORCE_BACK" />
   <uses-permission android:name="android.permission.GET_ACCOUNTS" />
   <uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
   <uses-permission android:name="android.permission.GET_TASKS" />
   <uses-permission android:name="android.permission.GLOBAL_SEARCH" />
   <uses-permission android:name="android.permission.HARDWARE_TEST" />
   <uses-permission android:name="android.permission.INJECT_EVENTS" />
   <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
   <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
   <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
   <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
   <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
   <uses-permission android:name="android.permission.MASTER_CLEAR" />
   <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
   <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
   <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
   <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
   <uses-permission android:name="android.permission.NFC" />
   <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
   <uses-permission android:name="android.permission.READ_CALENDAR" />
   <uses-permission android:name="android.permission.READ_CALL_LOG" />
   <uses-permission android:name="android.permission.READ_CONTACTS" />
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
   <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
   <uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS" />
   <uses-permission android:name="android.permission.READ_LOGS" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   <uses-permission android:name="android.permission.READ_PROFILE" />
   <uses-permission android:name="android.permission.READ_SMS" />
   <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" />
   <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
   <uses-permission android:name="android.permission.READ_SYNC_STATS" />
   <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
   <uses-permission android:name="android.permission.REBOOT" />
   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
   <uses-permission android:name="android.permission.RECEIVE_MMS" />
   <uses-permission android:name="android.permission.RECEIVE_SMS" />
   <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
   <uses-permission android:name="android.permission.RECORD_AUDIO" />
   <uses-permission android:name="android.permission.REORDER_TASKS" />
   <uses-permission android:name="android.permission.SEND_SMS" />
   <uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER" />
   <uses-permission android:name="android.permission.SET_ALARM" />
   <uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
   <uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
   <uses-permission android:name="android.permission.SET_DEBUG_APP" />
   <uses-permission android:name="android.permission.SET_ORIENTATION" />
   <uses-permission android:name="android.permission.SET_POINTER_SPEED" />
   <uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
   <uses-permission android:name="android.permission.SET_TIME" />
   <uses-permission android:name="android.permission.SET_TIME_ZONE" />
   <uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
   <uses-permission android:name="android.permission.STATUS_BAR" />
   <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" />
   <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
   <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
   <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
   <uses-permission android:name="android.permission.USE_CREDENTIALS" />
   <uses-permission android:name="android.permission.USE_SIP" />
   <uses-permission android:name="com.android.vending.BILLING" />
   <uses-permission android:name="android.permission.VIBRATE" />
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
   <uses-permission android:name="android.permission.WRITE_CALENDAR" />
   <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
   <uses-permission android:name="android.permission.WRITE_CONTACTS" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_GSERVICES" />
   <uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS" />
   <uses-permission android:name="android.permission.WRITE_PROFILE" />
   <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
   <uses-permission android:name="android.permission.WRITE_SETTINGS" />
   <uses-permission android:name="android.permission.WRITE_SMS" />
   <uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM" />
   <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
   <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
   <uses-permission android:name="android.permission.SEND_SMS" />
   <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
     <!-- GCM requires a Google account. -->
   <uses-permission android:name="android.permission.GET_ACCOUNTS" />

   <!-- Keeps the processor from sleeping when a message is received. -->
   <uses-permission android:name="android.permission.WAKE_LOCK" />

   <permission
       android:name=".permission.C2D_MESSAGE"
       android:protectionLevel="signature" />

   <uses-permission android:name=".permission.C2D_MESSAGE" />

   <!-- This app has permission to register and receive data message. -->
   <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
   <!-- Keeps the device on vibrating mode when a message is received. -->
   <uses-permission android:name="android.permission.VIBRATE" />
Cevapla
#8
Delphi ve SDK sürümü nedir?
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#9
Xe8 kullanıyorum sdk hiç güncellemedim
Cevapla
#10
Delphiyi son sürüme güncelleyin. Genelde nedeni budur.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Server : Tablolar için parametrik sıralı alan listesi uparlayan 6 928 16-07-2018, Saat: 18:36
Son Yorum: ssahinoglu
Lightbulb [GÜNCEL] Firebase GCM Android Bilgi Mesajı (Notification Push Message) mrmarman 18 7.179 27-04-2018, Saat: 09:23
Son Yorum: klavye
  Delphi Firemonkey Android İzin Kontrolü esrehmaan 2 1.190 23-12-2016, Saat: 22:22
Son Yorum: esrehmaan
  Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturma Fesih ARSLAN 0 1.265 21-10-2016, Saat: 11:53
Son Yorum: Fesih ARSLAN
  Mobil Platform için Kayan (Slide) Menü ve Açılır (Overflow=Popup) Menü Oluşturmak Fesih ARSLAN 6 3.403 18-09-2016, Saat: 16:29
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi