株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

*

温度管理システム的なものを作ってみる(その5)AndroidからCloudへの送信

      2015/05/06

screenshotshare_20140706_185023温度管理システム的なものを作ってみるの5回目です。前回はCloud(Microsoft Azure)での処理について書きました。そのCloudの処理の温度データ登録処理に送信するためのAndroidの処理について書きます。

前回書きましたが単純にHTTPのGETメソッドで温度データを送信しています。その部分のAndroid側でのプログラムについてです。送信するデータは温度データ、位置データ、現在時刻とデータのメモです。温度データの取得については、このシリーズの3回目で書いた通りです。位置データはLocationManagerを使います。(位置データが取得出来ているかのチェック処理は行っていません。)

HTTPの通信の処理は、Apacheが提供しているHTTPクライアントのDefaultHttpClientを使っています。ここではバックグラウンドで単純にHTTP通信を実行して、StatusがOKならResponseを取得しています。取得したResponseは特に解析はしていないです。テスト的に実際に登録されたかどうかはCloudで確認するということにしています。HTTP通信の方法は最新の方法もあるようなので以下に関連リンクを書いておきます。
Android の HTTP クライアントは何を使うべきか?
AndroidHttpClientを用いたデータ取得

実際のソースは以下です。今回に関連する部分だけ抜粋します。必要な場合はお手数ですが以下からダウンロードして頂ければと思います。(※一切の動作保証はしていません。御了承ください。)
ソースファイル一式

マニュフェストファイルでのパーミション

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

送信処理の実行まで

/**
* クラウド(Azure)へデータを登録
* @throws IOException
* @throws ParseException
*/
private void submitAddData(){
	String sVal;
	ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();

	//温度のチェック
	if(bTemp == false){
		tvMsg.setText("温度が取得出来ていません。");
		return;
	}

	sVal = etName.getText().toString();
	if(sVal.length() == 0){
		tvMsg.setText("データ名を入力して下さい。");
		return;
	}
	params.add(new BasicNameValuePair("Name", sVal));

	sVal = String.format("%f", latitude);
	params.add(new BasicNameValuePair("Latitude", sVal));

	sVal = String.format("%f", longitude);
	params.add(new BasicNameValuePair("Longitude", sVal));

	sVal = etDescription.getText().toString();
	if(sVal.length() == 0){
		tvMsg.setText("データ内容を入力して下さい。");
		return;
	}
	params.add(new BasicNameValuePair("Description", sVal));

	sVal = String.format("%f", temperature);
	params.add(new BasicNameValuePair("Temperature", sVal));

	Time time = new Time("Asia/Tokyo");
	time.setToNow();
	sVal = time.year + "/" + (time.month+1) + "/" + time.monthDay + " "
			+ time.hour + ":" + time.minute + ":" + time.second;

	params.add(new BasicNameValuePair("DateTime", sVal));

	// パラメータをクエリに変換
	String query = URLEncodedUtils.format(params, "UTF-8");
	String urlQuery = "http://isytmploggerdemo.azurewebsites.net/InsertPage.aspx?" + query;
	Task task = new Task();
    task.execute(urlQuery);
}

送信処理

/**
* Task
* クラウド送信処理のバックグラウンド処理用のクラス
*/
protected class Task extends AsyncTask<String, String, String>
{
    @Override
    protected String doInBackground(String... params)
    {
        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(params[0]);
        byte[] result = null;
        String str = "";
        try{
            HttpResponse response = client.execute(get);
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
                result = EntityUtils.toByteArray(response.getEntity());
                str = new String(result, "UTF-8");
            }
        }
        catch (Exception e) {
        }
        return str;
    }
}

実際に登録が出来ると以下のようにCloudで確認が出来ます。(※2015/05/06 実サイトは一旦公開終了しました。)
0010

今回でこのシリーズは完了です。今回の一連の内容を踏まえて、課題や発展、バックグラウンド等をもう少し調べて書きたいと思います。




 - Android

AdSense

AdSense

  関連記事

温度管理システム的なものを作ってみる(その2)Arduinoでの温度取得からスマホへ送信

「温度管理システム的なものを作ってみる」の2回目です。前回は全体的な内容について …

温度管理システム的なものを作ってみる(その1)システム概要

「温度管理システム的なものを作ってみる」の1回目です。AndroidでUSBシリ …

AndroidでUSBシリアル通信(その3)ライブラリサンプルの通信確認

AndroidでUSBシリアル通信の3回目です。前回は以下のライブラリのArdu …

AndroidでUSBシリアル通信(その2)ライブラリサンプルのArduinoスケッチ

AndroidでUSBシリアル通信の2回目です。前回はハードウェア構成、ソフトウ …

無線マイコン ToCoStick(トコスティック)をAndroidで使ってみた

無線マイコンの ToCoStick(トコスティック)をAndroidスマホで使っ …

温度管理システム的なものを作ってみる(その3)Androidでの温度取得

「温度管理システム的なものを作ってみる」の3回目です。前回はArduinoで温度 …

SHARP製スマホSHL23でBLE通信を試してみた

SHARP製のスマホSHL23でBLE(Bluetooth Low Energy …

AndroidでUSBシリアル通信(その1)ハードウェア・ソフトウェア構成等

Androidスマートフォン、タブレットでUSBシリアル通信を行う方法についてで …

AndroidでUSBシリアル通信(その4)ライブラリサンプルの内容

AndroidでUSBシリアル通信の4回目です。今回は、前回動作確認をしたライブ …