oms - 4

9974 ワード

Hello, OPhone!


次に、OPhoneのLocal Search APIを使用した簡単なOPhoneアプリケーションを作成し、すべてのコールレコードを出力する例を示します.

OPhoneプロジェクトの作成


最初のプロジェクトの作成を開始する前に、WindowsまたはLinuxにEclipseをインストールできるEclipse環境を構成する必要があります.Eclipseがない場合は、Eclipseの公式サイトにEclipse IDEをダウンロードすることができます.Eclipseがあれば、EclipseにADTがインストールされていることも確認します.ADTのインストール手順は、Eclipseプラグインのインストールを参照してください.
OPhoneプロジェクトの作成Eclipseを開き、「File>New」を選択し、「Android Project」オプションを選択します.
  • Projectプロパティを設定「New Android Project」ダイアログボックスを開き、Project名を入力し、Projectプロパティを設定します.具体的には下図を参照してください.Contentsセクションは通常のEclipseプロジェクトと同じです.Propertiesセクションではjavaコードのpackage名を記入し、Activity名を設定する必要があります.OPhoneアプリケーションではActivityがプログラムのエントリです.

  • OPhon eライブラリを追加Androidプロジェクトの作成をサポートした後、Eclipse IDEインタフェース左側の「Package Explorer」で先ほど作成したプロジェクトを選択し、右クリックするか「Project」メニューを開いて「Properties」を選択します.ポップアップ・プロパティ設定ウィンドウで「Java Build Path」を選択すると、次のウィンドウが表示されます.「Libraries」オプション・ページを選択します.「Add Library...」をクリックします.ボタンで「User Library」を選択し、「Next>」の下の図のようなダイアログボックスをクリックしてOPhoneを選択します.OPhoneオプションがない場合は「User Libraries...」をクリックします.OPhoneライブラリを構成します.詳細は、「Eclipse IDEにOPhoneライブラリを追加する」を参照してください.「OPhone」を選択し、「Finish」をクリックします.[プロジェクトのプロパティ]ダイアログボックスには、次のように表示されます.
     
    「OK」をクリックすると、OPhoneのプロジェクトが作成されます.プロジェクトの内部にはHelloOPhoneというjavaファイルがあります.ソースコードは以下の通りです.
    view plain copy to clipboard print ?
    public class HelloOPhone extends Activity {   
  •     /** Called when the activity is first created. */  

  •     @Override  
  •     public void onCreate(Bundle icicle) {   

  •         super.onCreate(icicle);   
  •         setContentView(R.layout.main);   

  •     }   
    }  
    	public class HelloOPhone extends Activity {
    		/** Called when the activity is first created. */
    		@Override
    		public void onCreate(Bundle icicle) {
    			super.onCreate(icicle);
    			setContentView(R.layout.main);
    		}
    	}
    

    コードの作成


    次に、この自動生成されたソースファイルを修正し、OPhone APIを呼び出します.サンプルコードが実現する機能は以下の通りです.
    画面にスクロール表示可能なテキスト領域を作成する.
  • OPhoneを呼び出すAPI
  • 出力コールは、OPhone APIの呼び出しによって得るであるテキスト領域に記録される.

    XMLファイルの編集、UIの作成

    mainを開く.xml、このファイルのパスはres/layout/mainです.xml.Eclipseでは「Android Layout Editor」でXMLファイルを編集できますが、修正したXMLの内容は以下の通りです.
    view plain copy to clipboard print ?
      

  •     android:layout_width="fill_parent"  
  •     android:layout_height="fill_parent">  

  •     
  •         android:layout_width="fill_parent"  

  •         android:layout_height="wrap_content" />  
  •   

  •    
    	<?xml version="1.0" encoding="utf-8"?>
    	<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    		android:layout_width="fill_parent"
    		android:layout_height="fill_parent">
    		<TextView android:id="@+id/textview"
    			android:layout_width="fill_parent"
    			android:layout_height="wrap_content" />
    	</ScrollView>
      
    はTextViewコントロールを作成し、コントロールのidが「textview」であることを指定します.TextViewのプロパティ値を設定し、「layout_height」の値は「wrap_content」です.
  • プロジェクト内のJavaファイルを編集し、LocalSearchのAPIを呼び出す

    次にjavaファイルを編集し、ophone/helloOPhoneを開きます.JAva、コードを追加し、LocalSearch APIを呼び出し、修正したコードは以下の通りです.
    view plain copy to clipboard print ?
    package oms.hello;   
  •   

  • import ...   
  • import oms.servo.search.SearchProvider;   

  • import android.database.Cursor;   
  • import android.net.Uri;   

  • import android.os.Bundle;   
  •   

  • public class HelloOPhone extends Activity {   
  •     /** Called when the activity is first created. */  

  •     @Override  
  •     public void onCreate(Bundle icicle) {   

  •   
  •         ...   

  •            
  •         // step 2: call OPhone API(LocalSearch)   

  •         String searchSelection = "type:" + SearchProvider.TYPE_CALL;   
  •         String searchResult = localSearch(searchSelection);   

  •     }   
  •   

  •     public String localSearch(String searchSelection) {   
  •         // search for SMS   

  •         Uri uri = Uri.parse(SearchProvider.CONTENT_URI);   
  •         Cursor cursor = getContentResolver().query(uri, null, searchSelection,   

  •                 null, null);   
  •   

  •         StringBuffer result = new StringBuffer();   
  •         result.append("#id   #calltype   #title   #time(#duration)/n");   

  •         // print result out   
  •         while (cursor.moveToNext()) {   

  •             // Use cursor.respond function to get the data.   
  •             Bundle extras = new Bundle();   

  •             extras = cursor.respond(extras);   
  •             // Extract the data from search result   

  •             String id = extras.getString(SearchProvider.FIELD_ID);   
  •             String calltype = extras.getString(SearchProvider.FIELD_CALL_TYPE);   

  •             String title = extras.getString(SearchProvider.FIELD_TITLE);   
  •             long time = Long.parseLong(extras.getString(SearchProvider.FIELD_TIME));   

  •             int duration = Integer.parseInt(extras.getString(SearchProvider.FIELD_CALL_DURATION));   
  •             result.append("/n").append(id)   

  •                 .append("/n[").append(calltype).append("]")   
  •                 .append("/t").append(title)   

  •                 .append("/t").append(new Date(time).toString())   
  •                 .append("(").append(duration).append(")")   

  •                 .append("/n");   
  •         }   

  •   
  •         cursor.close();   

  •         return result.toString();   
  •     }   

  • }   
        
    package oms.hello;
    
    import ...
    import oms.servo.search.SearchProvider;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    
    public class HelloOPhone extends Activity {
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle icicle) {
    
    		...
    		
    		// step 2: call OPhone API(LocalSearch)
    		String searchSelection = "type:" + SearchProvider.TYPE_CALL;
    		String searchResult = localSearch(searchSelection);
    	}
    
    	public String localSearch(String searchSelection) {
    		// search for SMS
    		Uri uri = Uri.parse(SearchProvider.CONTENT_URI);
    		Cursor cursor = getContentResolver().query(uri, null, searchSelection,
    				null, null);
    
    		StringBuffer result = new StringBuffer();
    		result.append("#id   #calltype   #title   #time(#duration)/n");
    		// print result out
    		while (cursor.moveToNext()) {
    			// Use cursor.respond function to get the data.
    			Bundle extras = new Bundle();
    			extras = cursor.respond(extras);
    			// Extract the data from search result
    			String id = extras.getString(SearchProvider.FIELD_ID);
    			String calltype = extras.getString(SearchProvider.FIELD_CALL_TYPE);
    			String title = extras.getString(SearchProvider.FIELD_TITLE);
    			long time = Long.parseLong(extras.getString(SearchProvider.FIELD_TIME));
    			int duration = Integer.parseInt(extras.getString(SearchProvider.FIELD_CALL_DURATION));
    			result.append("/n").append(id)
    				.append("/n[").append(calltype).append("]")
    				.append("/t").append(title)
    				.append("/t").append(new Date(time).toString())
    				.append("(").append(duration).append(")")
    				.append("/n");
    		}
    
    		cursor.close();
    		return result.toString();
    	}
    }
      
    上記のコードでは、LocalSearch APIを呼び出して電話記録情報を照会し、照会結果を文字列searchResultに保存する.

    出力結果

    の次のコードは、クエリの結果をTextViewに表示します.
    view plain copy to clipboard print ?
    package oms.hello;   
  •   

  • import ...   
  • import android.widget.TextView;   

  •   
  • public class HelloOPhone extends Activity {   

  •     /** Called when the activity is first created. */  
  •     @Override  

  •     public void onCreate(Bundle icicle) {   
  •   

  •         ...   
  •   

  •         // step 3: output the result to the TextView   
  •         if (searchResult != null) {   

  •             TextView tv = (TextView) findViewById(R.id.textview);   
  •             tv.setText(searchResult);   

  •         }   
  •     }   

  • }   
        
    package oms.hello;
    
    import ...
    import android.widget.TextView;
    
    public class HelloOPhone extends Activity {
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle icicle) {
    
    		...
    
    		// step 3: output the result to the TextView
    		if (searchResult != null) {
    			TextView tv = (TextView) findViewById(R.id.textview);
    			tv.setText(searchResult);
    		}
    	}
    }
      

    HelloOPhoneプログラムの実行


    HelloOPhoneプロジェクトを選択し、右クリックし、ポップアップメニューから「Run as」を選択し、最後に「Android Application」をクリックしてプログラムを実行します.その後、HelloOPhoneアプリケーションはデバイス(またはシミュレータ)に配備され、自動的に実行され、の結果が得られます.
    Copyright © China Mobile 2009