Commit 153d373d033945735b113b8518e5513e95530a1a
1 parent
6d661f0e7b
can print nearest city's pm2.5
Showing 11 changed files with 83 additions and 37 deletions
- .idea/gradle.xml
- .idea/modules.xml
- app/app.iml
- app/build.gradle
- app/src/main/AndroidManifest.xml
- app/src/main/java/com/example/junsang/simsimi/MainActivity.java
- app/src/main/res/layout/activity_main.xml
- json-simple-1.1.1/build.gradle
- json-simple-1.1.1/json-simple-1.1.1.iml
- json-simple-1.1.1/json-simple-1.1.1.jar
- settings.gradle
.idea/gradle.xml
View file @
153d373
.idea/modules.xml
View file @
153d373
... | ... | @@ -4,6 +4,7 @@ |
4 | 4 | <modules> |
5 | 5 | <module fileurl="file://$PROJECT_DIR$/Simsimi.iml" filepath="$PROJECT_DIR$/Simsimi.iml" /> |
6 | 6 | <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> |
7 | + <module fileurl="file://$PROJECT_DIR$/json-simple-1.1.1/json-simple-1.1.1.iml" filepath="$PROJECT_DIR$/json-simple-1.1.1/json-simple-1.1.1.iml" /> | |
7 | 8 | <module fileurl="file://$PROJECT_DIR$/jsoup-1.8.3/jsoup-1.8.3.iml" filepath="$PROJECT_DIR$/jsoup-1.8.3/jsoup-1.8.3.iml" /> |
8 | 9 | </modules> |
9 | 10 | </component> |
app/app.iml
View file @
153d373
... | ... | @@ -98,6 +98,7 @@ |
98 | 98 | <orderEntry type="library" exported="" name="appcompat-v7-23.1.0" level="project" /> |
99 | 99 | <orderEntry type="library" exported="" name="support-annotations-23.1.0" level="project" /> |
100 | 100 | <orderEntry type="module" module-name="jsoup-1.8.3" exported="" /> |
101 | + <orderEntry type="module" module-name="json-simple-1.1.1" exported="" /> | |
101 | 102 | </component> |
102 | 103 | </module> |
app/build.gradle
View file @
153d373
app/src/main/AndroidManifest.xml
View file @
153d373
... | ... | @@ -6,6 +6,10 @@ |
6 | 6 | android:minSdkVersion="8" |
7 | 7 | android:targetSdkVersion="17" /> |
8 | 8 | <uses-permission android:name="android.permission.INTERNET"/> |
9 | + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> | |
10 | + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> | |
11 | + | |
12 | + | |
9 | 13 | |
10 | 14 | <application |
11 | 15 | android:allowBackup="true" |
app/src/main/java/com/example/junsang/simsimi/MainActivity.java
View file @
153d373
1 | 1 | package com.example.junsang.simsimi; |
2 | 2 | |
3 | +import android.annotation.TargetApi; | |
3 | 4 | import android.os.AsyncTask; |
5 | +import android.os.Build; | |
4 | 6 | import android.support.v7.app.ActionBarActivity; |
5 | 7 | import android.os.Bundle; |
8 | +import android.util.Log; | |
6 | 9 | import android.view.Menu; |
7 | 10 | import android.view.MenuItem; |
8 | 11 | import android.widget.TextView; |
9 | 12 | |
13 | + | |
10 | 14 | import org.json.JSONArray; |
11 | 15 | import org.json.JSONException; |
12 | -//import org.w3c.dom.Document; | |
13 | 16 | |
14 | -import org.jsoup.Jsoup; | |
15 | -import org.jsoup.nodes.Document; | |
16 | -import org.jsoup.nodes.Element; | |
17 | -import org.jsoup.select.Elements; | |
17 | +import org.json.JSONObject; | |
18 | 18 | |
19 | 19 | import java.io.BufferedReader; |
20 | 20 | import java.io.IOException; |
21 | 21 | |
22 | 22 | |
23 | 23 | |
24 | 24 | |
... | ... | @@ -22,23 +22,28 @@ |
22 | 22 | import java.io.InputStreamReader; |
23 | 23 | import java.net.HttpURLConnection; |
24 | 24 | import java.net.URL; |
25 | -import java.util.Iterator; | |
26 | 25 | |
27 | 26 | |
28 | 27 | public class MainActivity extends ActionBarActivity { |
29 | 28 | |
30 | - private static final String URL = "http://aqicn.org/city/seoul"; | |
31 | - String results; | |
32 | - TextView pm_tv; | |
29 | + private static final String LOG_TAG = "junsang"; | |
33 | 30 | |
31 | + int flag = 0; //url flag | |
32 | + | |
34 | 33 | // |
35 | - public String parse_pm(String str){ | |
34 | + public String parse_pm(String str) { | |
36 | 35 | String parse_1 = str.split("<td id=\'cur_pm25\' class=\'tdcur\' style=\'font-weight:bold;font-size:11px;\' align=center>")[1]; |
37 | 36 | String parse_2 = parse_1.split("</td>")[0]; |
38 | 37 | |
39 | 38 | return parse_2; |
40 | 39 | } |
41 | 40 | |
41 | + private static final String URL = "http://jp3.aqicn.org/aqicn/services/geolocate/?autolocate&n=1"; | |
42 | + String nearestPos = ""; | |
43 | + String results; | |
44 | + TextView pm_tv; | |
45 | + | |
46 | + @TargetApi(Build.VERSION_CODES.M) | |
42 | 47 | @Override |
43 | 48 | protected void onCreate(Bundle savedInstanceState) { |
44 | 49 | super.onCreate(savedInstanceState); |
... | ... | @@ -66,7 +71,7 @@ |
66 | 71 | return super.onOptionsItemSelected(item); |
67 | 72 | } |
68 | 73 | |
69 | - private class DownloadPageTask extends AsyncTask<String, Void, String> { | |
74 | + private class DownloadPageTask extends AsyncTask<String, Void, String> { | |
70 | 75 | @Override |
71 | 76 | protected String doInBackground(String... urls) { |
72 | 77 | try { |
73 | 78 | |
74 | 79 | |
75 | 80 | |
76 | 81 | |
77 | 82 | |
78 | 83 | |
... | ... | @@ -79,32 +84,41 @@ |
79 | 84 | @Override |
80 | 85 | protected void onPostExecute(String result) { |
81 | 86 | results = result; |
87 | + String nearestUrl = ""; | |
82 | 88 | |
83 | - // 지금 result : html | |
84 | - // parsing -> JsonArray | |
85 | - String jsonStr = "hi"; | |
86 | - try { | |
87 | - JSONArray a = new JSONArray(jsonStr); | |
88 | - } catch (JSONException e) { | |
89 | - e.printStackTrace(); | |
89 | + JSONArray jArr = null; | |
90 | + | |
91 | + if(flag==0) { | |
92 | + | |
93 | + try { | |
94 | + jArr = new JSONArray(result); | |
95 | + | |
96 | + for (int i = 0; i < jArr.length(); i++) { | |
97 | + JSONObject curl = jArr.getJSONObject(i); | |
98 | + nearestPos = curl.getString("name"); | |
99 | + nearestUrl = curl.getString("curl"); | |
100 | + } | |
101 | + | |
102 | + } catch (JSONException e) { | |
103 | + e.printStackTrace(); | |
104 | + } | |
105 | + System.out.println(nearestPos); | |
106 | + System.out.println(nearestUrl); | |
107 | + flag++; | |
108 | + new DownloadPageTask().execute(nearestUrl); | |
90 | 109 | } |
110 | + else { | |
111 | + results = result; | |
91 | 112 | |
92 | - jsonStr = parse_pm(result); | |
93 | - /* | |
94 | - Document doc = Jsoup.parse(result); | |
95 | - Elements rows = doc.select("td.line-content "); | |
113 | + String pm25 =""; | |
96 | 114 | |
115 | + pm25 = parse_pm(result); | |
97 | 116 | |
98 | - for (Element row : rows) { | |
99 | - Iterator<Element> iterElem = row.getElementsByTag("div").iterator(); | |
100 | - StringBuilder builder = new StringBuilder(); | |
101 | - System.out.println(builder); | |
102 | - builder.append(iterElem.next()); | |
103 | - jsonStr= jsonStr+builder.toString(); | |
104 | - }*/ | |
105 | - // String testStr = (?:"<td id='cur_pm25' class='tdcur' style='font-weight:bold;font-size:11px;' align=center>") result; | |
117 | + System.out.println(nearestPos); | |
118 | + pm_tv.setText("지금 " + nearestPos + "의 초미세먼지 농도는 " + pm25 + "㎍/㎥야~"); | |
106 | 119 | |
107 | - pm_tv.setText("지금 서울의 초미세먼지 농도는 "+jsonStr+"㎍/㎥야~"); | |
120 | + flag =0; | |
121 | + } | |
108 | 122 | } |
109 | 123 | } |
110 | 124 | |
... | ... | @@ -133,7 +147,6 @@ |
133 | 147 | sb.append(line); |
134 | 148 | } |
135 | 149 | str = sb.toString(); |
136 | - | |
137 | 150 | |
138 | 151 | } else { |
139 | 152 | conn.disconnect(); |
app/src/main/res/layout/activity_main.xml
View file @
153d373
... | ... | @@ -16,7 +16,7 @@ |
16 | 16 | android:layout_height="match_parent"> |
17 | 17 | |
18 | 18 | <ImageView |
19 | - android:layout_marginTop="200dp" | |
19 | + android:layout_marginTop="250dp" | |
20 | 20 | android:layout_height="160dp" |
21 | 21 | android:layout_width="160dp" |
22 | 22 | android:background="@drawable/image1"/> |
... | ... | @@ -29,9 +29,6 @@ |
29 | 29 | android:layout_height="wrap_content" |
30 | 30 | android:background="@drawable/chat" |
31 | 31 | android:textSize="20sp" /> |
32 | - | |
33 | - | |
34 | - | |
35 | 32 | |
36 | 33 | </RelativeLayout> |
37 | 34 |
json-simple-1.1.1/build.gradle
View file @
153d373
json-simple-1.1.1/json-simple-1.1.1.iml
View file @
153d373
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<module external.linked.project.id=":json-simple-1.1.1" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="Simsimi" external.system.module.version="unspecified" type="JAVA_MODULE" version="4"> | |
3 | + <component name="FacetManager"> | |
4 | + <facet type="android-gradle" name="Android-Gradle"> | |
5 | + <configuration> | |
6 | + <option name="GRADLE_PROJECT_PATH" value=":json-simple-1.1.1" /> | |
7 | + </configuration> | |
8 | + </facet> | |
9 | + <facet type="java-gradle" name="Java-Gradle"> | |
10 | + <configuration> | |
11 | + <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" /> | |
12 | + <option name="BUILDABLE" value="false" /> | |
13 | + </configuration> | |
14 | + </facet> | |
15 | + </component> | |
16 | + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> | |
17 | + <exclude-output /> | |
18 | + <content url="file://$MODULE_DIR$"> | |
19 | + <excludeFolder url="file://$MODULE_DIR$/.gradle" /> | |
20 | + <excludeFolder url="file://$MODULE_DIR$/build" /> | |
21 | + </content> | |
22 | + <orderEntry type="inheritedJdk" /> | |
23 | + <orderEntry type="sourceFolder" forTests="false" /> | |
24 | + <orderEntry type="library" exported="" name="json-simple-1.1.1.json-simple-1.1.1" level="project" /> | |
25 | + </component> | |
26 | +</module> |
json-simple-1.1.1/json-simple-1.1.1.jar
View file @
153d373
settings.gradle
View file @
153d373