Merhaba arkadaşlar, geri dönüşümün ardından hız kesmeden faydalı konular açmaya devam .
Şimdi burada yapacağımız işlem şudur, iphone macbook kullanıcıları bilir, iphone ile mac i birbirine senkronize ettiğinizde iphone unuza gelen sms leri macbook üzerinden cevaplayabilirsiniz.
Bende geçen gece otururken neden android kullanıcılarıda aynısını yapamasın demiştim, özellikle pc de işlerimizle ilgilenirken sürekli telefona bakmak can sıkıcı olabiliyor.
Bende bunun için en kolay yöntem olan python (qpython3) ile telefonda ufak bir script yazdım , bilgisayarda da bunu karşılayacak başka bir script yazdım. Aslında deneme amaçlı yaptığım için sms gönderme ve alma işlemlerini ayrı ayrı scriptlerde yaptım , birleştirecektim fakat birleştirmedim sebebini birazdan anlatacağım.
Öncelikle projede yaptığımız işlem şu , android uygulaması yazan arkadaşlar bilir , sms - arama - alarm vs gibi işlemleri dinlemek için androidin broadcast listener ı vardır. Bu sınıfı extend edip amacınıza göre kullanırsınız. Ama maalesef python için böyle bir şey yok, pythonda anlık olarak gelme bilgisini alamıyorsunuz , bunu farklı bir yolla çözdüm.
Ama pythonun bu işlem için eksik kalmasının tek sebebi bu da değil , android 6 dan kaynaklanıyor olsa gerek , sms i okundu olarak işaretleyemiyoruz , aslında bunun fonksiyonu var fakat çalışmıyor.
Ve bir diğer eksik ise gene android 6 dan kaynaklı ''olabilir'' python scriptini backgroundda çalışıtramıyoruz , console ekranı açık kalmak zorunda ki bu da istenmeyecek bir durum.
Bunlar dışında bütün işlemi bilgisayarınızdan yaparken ,telefonunuzun ekranıda console açık olması sizler için pekte sorun olmayabilir.
Şimdi gelelim programın çalışma mantığına :
- Python scripti ''okunmamış sms sayısını'' sonsuz bir döngüde kontrol ediyor, eğer okunmamış sms sayısı 0 dan büyük olursa socket bağlantısı kurarak bu sms i pc ye gönderiyor
- Sms i okundu olarak işaretleyemediğimizden dolayı sürekli aynı sms i pc ye göndermemek için pc ye gönderdiğimiz sms in id sini bir dizide tutuyoruz ve eğer döngüde kontrol edilen sms id si bu dizide yoksa sms i pc ye gönderiyoruz.
(Bu yazıyı yazarken scripti biraz daha geliştirdim, gönderme ve alma işlemini tek scriptte hallettim aslında bu işlemi size bırakacaktım fakat basit anlamda thread kullanımınıda göstermiş olayım)
- Scriptimiz 2 parça olacak, sms gönderme işlevini yapan, ve sms alma işlevini yapan şeklinde.
Şimdi gelelim scriptimizin parça parça kodlanmasına :
-----ANDROID TELEFONUMUZDA Kİ KISIM-----
öncelikle gerekli kütüphanelerimizi import ediyoruz ve android nesnemizi oluşturuyoruz
şimdi bağlanacağımız bilgisayarımızın yerel ağ ip ver port adresini yazıyoruz client socketimizi oluşturuyoruz
altınada server socketimizi oluşturuyoruz
şimdi gelen sms leri bilgisayar gönderirken aynı zamanda bilgisayarımızdan sms alabilmek için bir thread oluşturuyoruz ki işlemimiz kesintiye uğramasın
şimdi de threadımızı başlatıyoruz
sıra geldi mesajlarımızı bilgisayar göndermeye. Bunun için öncelikle okunmamış mesajları bulmamız gerekiyor.
Evet arkadaşlar android telefonumuzdan bilgisayarımıza sms leri göndermek için gerekli işlemi hallettik. Şimdi bilgisayarımızdan bu sms leri dinleyecek ve cevap verecek scriptimizi hazırlayalım.
-----Bilgisayar için olan kodlar-----
Sms almak için
Sms gönderme
Bu kodu açıklama gereği duymuyorum zaten. Bunu parametrik hale getirmeyi size bırakıyorum.
numarayı gizledim sorun olmaması için
Aslında bu script çok daha geliştirilebilir, örneğin ufak bir gui yapıp telefondaki rehberi oraya gönderip numarayı elle yazmak yerine ufak mouse hareketleriyle bu işlemi yapabilirsiniz.
Ben size yazdığım kodun büyük bir çoğunluğunu veriyorum.
Bende bu uygulamayı android için java ile baştan yazıyorum. Çünkü broadcast listener lazım , socketlerin arkaplanda çalışması için service lazım. Uygulamayı yazıp android markette yayınlayacağım inşaAllah.
Ve bilgisayar için olanı da java ile tekrardan yazacağım, aslında bir kısmını yazdım, notification ekranı ve rehber olayı gibi ayrıntılar kaldı.
Bu scripti python sevenler kullanır, parametrik hale getirebilir rahatlıkla. Hatta sl4a yı birazcık kurcalayarak hali hazırda size verdiğim kodlara bir kaç ekleme yaparak rehberinizdeki numaraları bilgisayar aktarıp ufak bir gui sayesinde notification veya benzeri bir şey uygulayıp rahatlıkla pc den mesajlaşabilirsiniz.
Ayrıca pc ye aktarılan mesajları scripti açıp kapattığınızda kaybolmamsı için ''gonderilenler'' isimli diziyi bir dosyaya kaydedip tekrar okutabilirsiniz.
konu notları : telefonunuz ve bilgisayarınız aynı ağa bağlı olmalıdır, ve ip bilgisine kendi ip nizi yazmalısınız. telefonunuzda bu scripti çalıştırmak için qpython3 yüklü olmalıdır , apk sını internetten rahatlıkla bulabilirsiniz.
Güzel bir konu olduğunu düşünüyorum, artık bilgisayarınızdan sms gönderip alabilirsiniz, hepinize hayırlı olsun.
Şimdi burada yapacağımız işlem şudur, iphone macbook kullanıcıları bilir, iphone ile mac i birbirine senkronize ettiğinizde iphone unuza gelen sms leri macbook üzerinden cevaplayabilirsiniz.
Bende geçen gece otururken neden android kullanıcılarıda aynısını yapamasın demiştim, özellikle pc de işlerimizle ilgilenirken sürekli telefona bakmak can sıkıcı olabiliyor.
Bende bunun için en kolay yöntem olan python (qpython3) ile telefonda ufak bir script yazdım , bilgisayarda da bunu karşılayacak başka bir script yazdım. Aslında deneme amaçlı yaptığım için sms gönderme ve alma işlemlerini ayrı ayrı scriptlerde yaptım , birleştirecektim fakat birleştirmedim sebebini birazdan anlatacağım.
Öncelikle projede yaptığımız işlem şu , android uygulaması yazan arkadaşlar bilir , sms - arama - alarm vs gibi işlemleri dinlemek için androidin broadcast listener ı vardır. Bu sınıfı extend edip amacınıza göre kullanırsınız. Ama maalesef python için böyle bir şey yok, pythonda anlık olarak gelme bilgisini alamıyorsunuz , bunu farklı bir yolla çözdüm.
Ama pythonun bu işlem için eksik kalmasının tek sebebi bu da değil , android 6 dan kaynaklanıyor olsa gerek , sms i okundu olarak işaretleyemiyoruz , aslında bunun fonksiyonu var fakat çalışmıyor.
Ve bir diğer eksik ise gene android 6 dan kaynaklı ''olabilir'' python scriptini backgroundda çalışıtramıyoruz , console ekranı açık kalmak zorunda ki bu da istenmeyecek bir durum.
Bunlar dışında bütün işlemi bilgisayarınızdan yaparken ,telefonunuzun ekranıda console açık olması sizler için pekte sorun olmayabilir.
Şimdi gelelim programın çalışma mantığına :
- Python scripti ''okunmamış sms sayısını'' sonsuz bir döngüde kontrol ediyor, eğer okunmamış sms sayısı 0 dan büyük olursa socket bağlantısı kurarak bu sms i pc ye gönderiyor
- Sms i okundu olarak işaretleyemediğimizden dolayı sürekli aynı sms i pc ye göndermemek için pc ye gönderdiğimiz sms in id sini bir dizide tutuyoruz ve eğer döngüde kontrol edilen sms id si bu dizide yoksa sms i pc ye gönderiyoruz.
(Bu yazıyı yazarken scripti biraz daha geliştirdim, gönderme ve alma işlemini tek scriptte hallettim aslında bu işlemi size bırakacaktım fakat basit anlamda thread kullanımınıda göstermiş olayım)
- Scriptimiz 2 parça olacak, sms gönderme işlevini yapan, ve sms alma işlevini yapan şeklinde.
Şimdi gelelim scriptimizin parça parça kodlanmasına :
-----ANDROID TELEFONUMUZDA Kİ KISIM-----
öncelikle gerekli kütüphanelerimizi import ediyoruz ve android nesnemizi oluşturuyoruz
Kod:
import android , socket, threading ,json
droid = android.Android()
şimdi bağlanacağımız bilgisayarımızın yerel ağ ip ver port adresini yazıyoruz client socketimizi oluşturuyoruz
altınada server socketimizi oluşturuyoruz
Kod:
host = '192.168.0.x'
port = 4595
#client (bilgisayara bağlanacak) socketimiz
sock = socket.socket()
sock.connect((host,port))
#server (bilgisayardan sms alacak) socketimiz
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('',2595))
şimdi gelen sms leri bilgisayar gönderirken aynı zamanda bilgisayarımızdan sms alabilmek için bir thread oluşturuyoruz ki işlemimiz kesintiye uğramasın
Kod:
def cevapBekle():
server.listen(5);
while True:
client,address = server.accept()
gelen = client.recv(1024)
if gelen:
msj = json_dumps(gelen.decode('utf-8'))
print('numara : ' + msj['numara'] + ' msj : ' + msj['msj'])
droid.smsSend(msj['numara'],msj['msj']);
client.close()
şimdi de threadımızı başlatıyoruz
Kod:
threading.Thread(target=cevapBekle)
sıra geldi mesajlarımızı bilgisayar göndermeye. Bunun için öncelikle okunmamış mesajları bulmamız gerekiyor.
Kod:
gelen_id = droid.smsGetMessageIds(True,'inbox') #gelen kutusundaki okunmamış sms lerin id lerini alıyoruz. Eğer False deseydik okunmuş smslerin id lerini alırdık
okunanlar = [] #bir kere bilgisayara gönderdiğimiz sms i tekrar göndermemek için okunan sms lerin listesini bir dizide tutuyoruz
while len(gelen_id) > 0:
for id in gelen_id:
if id not in okunanlar:
msj = droid.smsGetMessageById(id,['address','body']) #okunmamış sms in gönderen bilgisini ve msj içeriğini alıyoruz
sock.sendall(str(msj[1]).encode()) #sms i bilgisayara gönderiyoruz
okunanlar.append(id) #sms i okunanlar listesine alıyoruz
Evet arkadaşlar android telefonumuzdan bilgisayarımıza sms leri göndermek için gerekli işlemi hallettik. Şimdi bilgisayarımızdan bu sms leri dinleyecek ve cevap verecek scriptimizi hazırlayalım.
-----Bilgisayar için olan kodlar-----
Sms almak için
Kod:
import socket
s = socket.socket()
port = 4595
#host = socket.gethostname()
host = ''
s.bind((host,port))
s.listen(1)
while True:
c,addr = s.accept()
print 'got connection from' , addr
gelen = c.recv(2048)
while (gelen):
print gelen
gelen = c.recv(2048)
c.close()
Sms gönderme
Kod:
import socket,json
s = socket.socket()
port = 2595
host = '192.168.0.16'
s.connect((host,port))
cevap = {'numara':'1234','msj':'adsfsadf'}
s.sendall(json.dumps(cevap).encode('utf-8'));
s.close();
Bu kodu açıklama gereği duymuyorum zaten. Bunu parametrik hale getirmeyi size bırakıyorum.
Aslında bu script çok daha geliştirilebilir, örneğin ufak bir gui yapıp telefondaki rehberi oraya gönderip numarayı elle yazmak yerine ufak mouse hareketleriyle bu işlemi yapabilirsiniz.
Ben size yazdığım kodun büyük bir çoğunluğunu veriyorum.
Bende bu uygulamayı android için java ile baştan yazıyorum. Çünkü broadcast listener lazım , socketlerin arkaplanda çalışması için service lazım. Uygulamayı yazıp android markette yayınlayacağım inşaAllah.
Ve bilgisayar için olanı da java ile tekrardan yazacağım, aslında bir kısmını yazdım, notification ekranı ve rehber olayı gibi ayrıntılar kaldı.
Bu scripti python sevenler kullanır, parametrik hale getirebilir rahatlıkla. Hatta sl4a yı birazcık kurcalayarak hali hazırda size verdiğim kodlara bir kaç ekleme yaparak rehberinizdeki numaraları bilgisayar aktarıp ufak bir gui sayesinde notification veya benzeri bir şey uygulayıp rahatlıkla pc den mesajlaşabilirsiniz.
Ayrıca pc ye aktarılan mesajları scripti açıp kapattığınızda kaybolmamsı için ''gonderilenler'' isimli diziyi bir dosyaya kaydedip tekrar okutabilirsiniz.
konu notları : telefonunuz ve bilgisayarınız aynı ağa bağlı olmalıdır, ve ip bilgisine kendi ip nizi yazmalısınız. telefonunuzda bu scripti çalıştırmak için qpython3 yüklü olmalıdır , apk sını internetten rahatlıkla bulabilirsiniz.
Güzel bir konu olduğunu düşünüyorum, artık bilgisayarınızdan sms gönderip alabilirsiniz, hepinize hayırlı olsun.
Son düzenleme:



