2011年1月24日月曜日

ListViewの最後までスクロールしたら次の要素を追加で読む

GMailからデータを取得して表示するListViewを作った所、非常に遅い。
GMailから数件読んで、最後まで見たら追加で読み込むような処理を作ってみた。

要はOS2.2搭載のGMailアプリと一緒。

まさにこれ、といったサンプルがあったので。
参考
http://visible-true.blogspot.com/2010/12/listview.html
すばらしい。

2011年1月9日日曜日

Windows2008でOpenSSL

postgresqlとの通信を暗号化するために、OpenSSLで証明書を作成する。

ダウンロードは、ここから。
http://www.slproweb.com/products/Win32OpenSSL.html
・Win32 OpenSSL v1.0.0c
・Visual C++ 2008 Redistributables
・あとActivePealをGET.

OpenSSLのインストール
・http://www.adminweb.jp/apache/ssl/index1.html

※ちょっとつまずいたこと
Visual C++ 2008 Redistributablesは、日本語再配布版をインストールすると


The Win32 OpenSSL Installation Project setup has detected that the
following critical component is missing:
Microsoft Visual C++ 2008 Redistributables

Win32 OpenSSL will not function properly without this component.
It is recommended that you install the missing component before clicking
"OK" to continue.


と警告メッセージが表示される。
英語版をインストールすることで、このメッセージがでなくなった。

IIS+OpenSSLの参考
・http://flashcast.jp/blog/2008/12/openssliis.html (インストール手順とか)
・http://homepage2.nifty.com/protocol/openssl/  (証明書の作成方法とか)


AndroidからSSL接続しようとするとエラーになるので、Android側の設定を調査中・・・

2011年1月5日水曜日

Androidでメール送受信(IMAP編)

Android標準機能ではできないので、JavaMailを使う。

①必要なライブラリをダウンロード

http://code.google.com/p/javamail-android/downloads/list から
additional.jar、mail.jar、activation.jarを入手。

②Eclipse上で参照ライブラリに上3つを追加。

③AndroidManifest.xmlに、外部ライブラリの宣言を追加。


    <!-- mail.jar  -->
    <uses-library android:name="javax.mail" />
    <!-- activation.jar  -->
    <uses-library android:name="javax.activation" />
    <!-- additional.jar  -->
    <uses-library android:name="org.apache.harmony.awt" />

    <!-- インターネットに接続できる権限を追加  -->


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

④一覧を取得するコード

import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;

public class IMAPDemo {

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception{
  String host = "imap.gmail.com";
  int port = 993;
  String user = "XXX@gmail.com";
  String password = "XXX";
  String target_folder = "INBOX";

  Properties props = System.getProperties();
  Session sess = Session.getInstance(props, null);
//  sess.setDebug(true);

  Store st = sess.getStore("imaps");
  st.connect(host, port, user, password);
  Folder fol = st.getFolder(target_folder);
  if(fol.exists()){
   for(Folder f : fol.list()){
    System.out.println(f.getName());
   }
   fol.open(Folder.READ_ONLY);
   for(Message m : fol.getMessages()){
    System.out.printf("%s - %d\n", m.getSubject(), m.getSize());
   }
   fol.close(false);
  }else{
   System.out.printf("%s is not exist.", target_folder);
  }
  st.close();
 }




参考サイト
http://androside.com/page_contents/page_android_javaMail.html
http://d.hatena.ne.jp/jbking/20080608/p1