« 手のひらサイズの無線LANルータ | トップページ | 雪と帽子 »

2010年2月12日 (金)

PySMSViewer 「SMSをスレッド表示で読む」

2010-02-12(金)雨・雪、曇り

 以前、考えて放ってあったアプリですが、SMSをスレッド表示で読むアプリです。先日書いた「Free-iSMS」という使いやすいアプリがあるので、今更必要はないですし、ただ読むことが出来る、、というだけのものです。とはいえ、途中で放り出したまま、、というのも何なので作り上げて見ました。 (モジュールは最後に貼り付けました。)

 以前は、Pythonの知識もスクリプトの財産も少なかったので大変でしたが、現在ではテキスト関連のスクリプトですと、結構今までのものの切り貼り・修正でコーディングすることが出来ます。

 こんな感じで表示されます。緑が「送信」、青色が「受信」です。受信と送信済みのフォルダを別々に読むよりは見やすいと思います。

Sscx0606

 読み出して時刻順に表示するのは簡単にできましたが、面倒な問題もありました。これから同じようなことをやる方はいないと思いますが一応、記録のために書いておくことにします。

 問題はアドレスです。Pythonの命令で取得できる、各SMS内の相手のアドレスは、電話帳に関連づけられた場合(注1)は、そこの名前になります。また、番号を入力して送信したものや、電話帳に登録されていない人は、電話番号で表示されます。

  注1:SMS送信時に、相手を電話帳で探して入力した場合とか、受信したときの相手の番号が電話帳にあるとき、などです。

(1)名前が取得される場合、「姓・名」の順、或いは「名・姓」の順番になることがある。これは電話機や電話帳の設定(表示順の設定)、その他何らかの条件により決まるようです。「姓・名」と「名・姓」は、そのままでは同じ人と見なしにくいので、スレッドになりません。

(2)うっかり、相手の電話番号を入力して送信するとアドレスは電話番号になります。返信などで向こうからきたSMSのアドレスは、電話帳に登録されている名前になるので、これもスレッドになりません。

 ということで対策を入れました、、が、その為に大分速度が落ちました。

(1)の対策: 姓と名の間に入れられるスペーサ(1個のスペース、またはカンマとスペース)を探して、そこで切って前後を入れ替えては比較してゆく。
 即ち、姓の欄「山田 家」 名の欄「Yamada」の人の例ですと、「山田 家 Yamada」というアドレスの場合「山田 家 Yamada」「家 Yamada 山田」「Yamada 山田 家」と比較してゆきます。

(2)の対策: アドレスが電話番号の場合は、電話帳の中を検索して、該当の電話番号を持つ人の名前を使用して比較します。この場合、電話番号には「+国番号」がついている場合や、ない場合があるので、頭の部分を若干削って比較しています。100%正しいとはいいにくいのですが大丈夫でしょう。

 +で始まる場合:4桁削っている(+852を想定)
 0で始まる場合:1桁削っている。
 その他:そのまま

Sscx0601  Sscx0603

 左が対策前、右が対策後です。番号の行が二つ消えているのは、名前が表示されている方のスレッドに入ったからです。

------モジュール-----------

「PySMSViewer_0_1_0.py」

--------------------------

|

« 手のひらサイズの無線LANルータ | トップページ | 雪と帽子 »

Python」カテゴリの記事

アプリケーション」カテゴリの記事

携帯電話」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/513620/47549215

この記事へのトラックバック一覧です: PySMSViewer 「SMSをスレッド表示で読む」:

« 手のひらサイズの無線LANルータ | トップページ | 雪と帽子 »