2017年5月30日 星期二

專題作業4

Opendata開放資料&Json

使用的開放資料:
新北市NewTaipei熱點
http://data.ntpc.gov.tw/od/data/api/04958686-1B92-4B74-889D-9F34409B272B?$format=json

一、確認網路權限
在AndroidMainfest.xml中,輸入以下程式碼,以開啟網路權限
<uses-permission android:name="android.permission.INTERNET"/>


二、加入ASYNCTASK
在MainActivity.java中(後面都在相同位置),輸入以下程式碼
class JSonTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            StringBuilder sb = new StringBuilder();
            try {
                URL url = new URL(params[0]);
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                String line = in.readLine();
                while (line != null) {
                    Log.d("HTTP", line);
                    sb.append(line);
                    line = in.readLine();
                }
            }
            catch (Exception e) {
            }
            return sb.toString();
        }

        protected void onPostExecute(String s){
            super.onPostExecute(s);
            Log.d("JSON", s);
            parseJSON(s);

        }

    }


三、設定取得Json資料類別
輸入以下程式碼
private void parseJSON(String s){
        try {
            JSONArray OpenData = new JSONArray(s);

            for (int i = 0; i < 5; i++){
                JSONObject json = OpenData.getJSONObject(i);

                Log.i("JSON"+i,json.getString("company"));

                String result1 = json.getString("district");
                Log.i("JSON"+i,"熱點地區:"+result1);
                String result2 = json.getString("spot_name");
                Log.i("JSON"+i,"熱點名稱:"+result2);
                String result3 = json.getString("address");
                Log.i("JSON"+i,"熱點地址:"+result3);
                String result4 = json.getString("latitude");
                Log.i("JSON"+i,"熱點經度:"+result4);
                String result5 = json.getString("longitude");
                Log.i("JSON"+i,"熱點緯度:"+result5);


            }
        }
        catch (JSONException e){

        }
    }


四、設定URL與程式互相呼應
輸入以下程式碼
String URL_A = "http://data.ntpc.gov.tw/od/data/api/04958686-1B92-4B74-889D-9F34409B272B?$format=json";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new JSonTask().execute(URL_A);
    }


五、最終結果
打開"Android Monitor",選取"Debug",搜尋"JSON"


Finish~~\( ̄︶ ̄)/\( ̄︶ ̄)/\( ̄︶ ̄)/

2017年5月9日 星期二

專題作業3

Facebook 按讚&分享功能

壹、前置確認
1.
如果要從APP將訊息貼到使用者的塗鴉牆,首先請在Manifest檔案中確認第一次設定Facebook SDK時的ContentProvider標籤是否有存在,如果沒有的話請加入
i.開啟AndroidManifest.xml檔,確認這行有無輸入



2.新增按鈕
i.開啟Activity_main.xml(Layout檔),增加以下程式碼
**Like Button
<com.facebook.share.widget.LikeView
android:id="@+id/likeView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/login_button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

**Share Button
<com.facebook.share.widget.ShareButton
android:id="@+id/shareButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/likeView"
android:layout_marginTop="30dp" />


貳、程式撰寫
1.Like Part
i.打開Java主程式中的MainActivity.java,輸入以下程式碼(在onCreate下)
**網址部分請換上想按讚的網址**

LikeView likeView = (LikeView)findViewById(R.id.likeView);
likeView.setLikeViewStyle(LikeView.Style.STANDARD);
likeView.setAuxiliaryViewPosition(LikeView.AuxiliaryViewPosition.INLINE);
likeView.setObjectIdAndType("https://www.facebook.com/viaalto/?ref=ts&fref=ts",LikeView.ObjectType.OPEN_GRAPH);

2.Share Part
i.分享連結中會包含以下屬性
contentURL:分享的連結
contentTitle:代表連結中的內容標題
imageURL:顯示在貼文上的縮圖圖像網址
contentDescriptipn:內容說明,2~4句

ii.打開Java主程式中的MainActivity.java,輸入以下程式碼(在onCreate下)
**於各段字串部分上面有制式規格,請依自況填寫**

ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://www.facebook.com/viaalto/?ref=ts&fref=ts"))
.setContentTitle("Alto")
.setContentDescription("Alto 是皮革設計品牌")
.build();
ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button);
shareButton.setShareContent(content);


參、程式執行
1.初始介面


2.Like介面



3.Share介面


4.測試結果


Finish~~v( ̄︶ ̄)y