Advanced Interdisciplinary Projects Lab(AIPLab) 討論區

Please login or register.

請輸入帳號, 密碼以及預計登入時間

新聞:

[慶賀]恭喜張清貿醫師升任北榮傳醫科主治醫師-20170201

作者 主題: [App Client 1] 看診進度  (閱讀 772 次)

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1715
    • 檢視個人資料
[App Client 1] 看診進度
« 於: 十二月 11, 2014, 12:10:40 pm »
//復習
(1) 請先完成上週的 [Web Client 1] 看診進度步驟
(2) 開啟Android模擬器(AVDM) //->複習之前的Android程式練習1~3
 //Android建立專案
(4) 在Eclipse建立一個新的Android專案MyC1App
https://developer.android.com/training/basics/firstapp/creating-project.html
(5) 在Eclipse中, Run->Run Configurations->Android Application->Run
在模擬器中看App的執行
« 最後編輯時間: 十二月 11, 2014, 12:16:13 pm 由 admin »
已記錄

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1715
    • 檢視個人資料
回覆: [App Client 1] 看診進度
« 回覆文章 #1 於: 十二月 11, 2014, 12:31:51 pm »
//建立UI包括layout和string
======
( 6 ) 打開 /res/layout/activity_main.xml
( 7 ) 在 activity_main.xml Tab, 修改
程式碼: [Select]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.mysecondapp.MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="0dp"
        android:text="@string/app_title"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="10dp"
        android:text="@string/today_doctor"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <DigitalClock
        android:id="@+id/digitalClock1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="10dp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_alignTop="@+id/digitalClock1"
        android:text="@string/today_doctor_dummy"
        android:textAppearance="?android:attr/textAppearanceMedium" />
   
    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/digitalClock1"
        android:layout_below="@+id/digitalClock1"
        android:layout_marginTop="54dp"
        android:text="@string/app_subtitle1"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView6"
        android:layout_below="@+id/textView6"
        android:layout_marginTop="10dp"
        android:text="@string/to_register"
        android:onClick="showRegisterActivity" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView6"
        android:layout_below="@+id/textView3"
        android:layout_marginTop="15dp"
        android:text="@string/today_order_dummy"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
( 8 ) 打開 res/values/strings.xml
( 9 ) 編輯
程式碼: [Select]
<string name="app_name">AsiaClinic</string>
    <string name="app_title">模擬診所的行動App</string>
    <string name="today_doctor">AU Clinic本日醫生:</string>
    <string name="today_doctor_dummy">xxx</string>
    <string name="today_order">目前看診:</string>
    <string name="today_order_dummy">xxx</string>
    <string name="app_subtitle1">模擬診所-看診進度</string>
    <string name="app_subtitle2">模擬診所-預約掛號</string>
    <string name="app_subtitle3">模擬診所-查詢掛號</string>
    <string name="app_func1">目前看診順序</string>
    <string name="app_func2">預約掛號</string>
    <string name="app_func3">查詢掛號</string>
    <string name="place_holder">xxxx</string>
    <string name="to_register">預約掛號</string>
    <string name="to_query">查詢掛號</string>
    <string name="to_order">看診進度</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_register">RegisterActivity</string>
    <string name="title_activity_query">QueryActivity</string>
    <string name="title_activity_reg_result">RegResultActivity</string>
    <string name="label_id">身份證號碼</string>
    <string name="label_name">病人姓名</string>
    <string name="label_submit">送出預約</string>
    <string name="label_submit2">送出查詢</string>
    <string name="patient_id">X111222333</string>
    <string name="patient_name">王小明</string>
    <string name="query_result_dummy">查詢結果</string>
    <string name="connection_error">Connection error.</string>
« 最後編輯時間: 十二月 24, 2014, 03:57:32 pm 由 admin »
已記錄

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1715
    • 檢視個人資料
回覆: [App Client 1] 看診進度
« 回覆文章 #2 於: 十二月 11, 2014, 12:39:16 pm »
(10) 在AndroidManifest.xml插入網路權限
程式碼: [Select]
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


已記錄

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1715
    • 檢視個人資料
回覆: [App Client 1] 看診進度
« 回覆文章 #3 於: 十二月 11, 2014, 12:48:28 pm »
//修改MainActivity.java
//修改過程如果有未知的類別名稱可以按Ctrl+Shirt+O來加上類別定義
(11) 在public class MainActivity extends Activity {下面加上
程式碼: [Select]
Timer timer = new Timer(true);
(12) 在onCreate()函數中加上
程式碼: [Select]
timer.schedule(new timerTask(), 1000, 10000);
(13) 在onCreate()函數下方加上
程式碼: [Select]
public class timerTask extends TimerTask
    {
      public void run()
      {
      //TextView tv = (TextView) findViewById(R.id.textView1);
      //tv.setText("Checking...");
     
      ConnectivityManager connMgr = (ConnectivityManager)
              getSystemService(Context.CONNECTIVITY_SERVICE);
      NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
      if (networkInfo != null && networkInfo.isConnected()) {
      new DownloadOrderTask().execute("http://clinic.aiplab.net/visit_now.php");
      }
      else{
      //tv.setText("No Network Connect");
      }
      }
    };
[14] 在下方加上
程式碼: [Select]
private class DownloadOrderTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {
       
            try {
                return loadFromNetwork(urls[0]);
            } catch (IOException e) {
               return getString(R.string.connection_error);
            }
        }

        /**
         * Uses the logging framework to display the output of the fetch
         * operation in the log fragment.
         */
        @Override
        protected void onPostExecute(String result) {
            TextView tv = (TextView) findViewById(R.id.textView5);
        tv.setText(result);
        }
    }
(15) 在下面的}之前加上
程式碼: [Select]
/** Initiates the fetch operation. */
    private String loadFromNetwork(String urlString) throws IOException {
        InputStream stream = null;
        String str ="NONO";

        try {
            stream = downloadUrl(urlString);
            str = readIt(stream, 500);
       } finally {
           if (stream != null) {
               stream.close();
            }
        }
        return str;
    }

    /**
     * Given a string representation of a URL, sets up a connection and gets
     * an input stream.
     * @param urlString A string representation of a URL.
     * @return An InputStream retrieved from a successful HttpURLConnection.
     * @throws java.io.IOException
     */
    private InputStream downloadUrl(String urlString) throws IOException {
        // BEGIN_INCLUDE(get_inputstream)
        URL url = new URL(urlString);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        // Start the query
        conn.connect();
        //InputStream stream =null;
        InputStream stream = conn.getInputStream();
        return stream;
        // END_INCLUDE(get_inputstream)
    }

    /** Reads an InputStream and converts it to a String.
     * @param stream InputStream containing HTML from targeted site.
     * @param len Length of string that this method returns.
     * @return String concatenated according to len parameter.
     * @throws java.io.IOException
     * @throws java.io.UnsupportedEncodingException
     */
    private String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
        Reader reader = null;
        reader = new InputStreamReader(stream, "UTF-8");
        char[] buffer = new char[len];
        reader.read(buffer);
        return new String(buffer);
    }
« 最後編輯時間: 十二月 11, 2014, 12:56:55 pm 由 admin »
已記錄
 

SimplePortal Classic 2.0.5