Android – 機房溫度監測簡單範例

分享一個簡單的 android 程式範例. 主要用 ImageView 顯示某 URL 的圖片. 這算是我第一隻比較有用處的 Android 程式


將手機連接到電腦. 啟用 debug 模式. 執行之後就可以將程式部屬到 android 手機了. 這比起蘋果的 Xcode 方便許多. iphone 系列手機沒破解的話就不能直接在設備上執行. 真是有點令人討厭.


執行 Temperature 程式結果

以下為 Android 各檔案的內容 :
AndroidManifest.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="tw.edu.sinica.tiara.temperature"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Temperature"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
    </application>
    <uses-sdk android:minSdkVersion="5" />
 
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>

在這裡要注意是否加入 <uses-permission android:name=”android.permission.INTERNET”></uses-permission>. 如果沒加入的話.程式不能存取 internet. 這個我搞了好久才想起來要這樣弄.

下面檔案主要在描述 UI 部分
layout/main.xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:text="@string/title" android:gravity="center" android:textSize="16sp" android:textColor="#FF000000" android:background="#FFFFFFFF"/>
<ImageView android:id="@+id/ImageViewR937" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFFFF"></ImageView>
</LinearLayout>

下列檔案在描述 strings
values/strings.xml

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">R937</string>
    <string name="app_name">Temperature</string>
</resources>

以下為程式主要的檔案 :
Temperature.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package tw.edu.sinica.tiara.temperature;
 
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
 
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;
 
public class Temperature extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        ImageView imgView = (ImageView)findViewById(R.id.ImageViewR937);
        Drawable drawable = ImageOperations("http://somewhere/monitoring/temp.jpg");
        imgView.setImageDrawable(drawable);
    }
 
    private Drawable ImageOperations(String url) {
		try {
			InputStream is = (InputStream) new URL(url).getContent();
			Drawable d = Drawable.createFromStream(is, "src name");
			return d;
		} catch (MalformedURLException e) {
			e.printStackTrace();
			return null;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}
 
}

這樣算是勉強能用的程式. 這還需要在改進. 例如, 使用 Timer 定時讀溫度. 然後設定超過多少溫度顯示 Alert. 當然, 要弄個 Setting 介面讓使用者定義 interval & alert temperature. 之後, 在慢慢加入. 暫時先這樣!

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.