2016-11-04 27 views
0

をダウンロードしてください。私は現在、openweathermap.orgからAPIを使用していると私は応答しても、アイコンタグがあることに気づいて、私はあなたが実際にこの画像を表示するように入手できますどのように思っていました。私はそれを使って周りを試してみたが、私はそれを把握していないようだ。OpenWeatherMapアイコン私が天気サービスを使用してAndroidアプリに取り組んでいますアンドロイド

これは私の主な活動です:

public class MainActivity extends Activity { 

String description; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
@Override 
protected void onStart() { 
    super.onStart(); 

    Double lat = 55.676098; 

    Double lon = 12.568337; 

    String apiKey = "70c5bf4e84a725a8aeb3dd8c7df4c254"; 
    String urlAPI = "http://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&APPID=" + apiKey; 
    String imgURL = "http://openweathermap.org/img/w/" + description + ".png"; 
    Weather weatherApi = new Weather(); 
    weatherApi.execute(urlAPI); 
    weatherApi.execute(imgURL); 


} 
public void goToShowFishActivity(View view) { 

    Intent intent = new Intent(this, ShowFishiesActivity.class); 
    startActivity(intent); 

} 

public void goToAddNewCatchActivity(View view) { 
    Intent intent = new Intent(this, AddCatch.class); 
    startActivity(intent); 
} 

public void goToLogin(View view) { 
    Intent intent = new Intent(this, CreateUserActivity.class); 
    startActivity(intent); 
} 

private class Weather extends ReadHttpTask{ 
    @Override 
    protected void onPostExecute(CharSequence charSequence){ 

     String text = charSequence.toString(); 
     Integer start = text.indexOf("icon\":\"") + "icon\":\"".length(); 
     Integer end = text.indexOf("\"}",start); 
     description = text.substring(start, end); 


     TextView weatherTry = (TextView) findViewById(R.id.weatherTry); 
     weatherTry.setText(description); 


    } 
    } 

} 

マイReadHttpTaskクラス:

public class ReadHttpTask extends AsyncTask<String, Void, CharSequence> { 
@RequiresApi(api = Build.VERSION_CODES.N) 
@Override 
protected CharSequence doInBackground(String...urls) { 
    String urlString = urls[0]; 
    try{ 
     CharSequence result = HttpHelper.GetHttpResponse(urlString); 
     return result; 
    } 
    catch (IOException ex){ 
     cancel(true); 
     String errorMessage = ex.getMessage() + "\n" + urlString; 
     Log.e("Something went wrong", errorMessage); 
     return errorMessage; 
    } 
    } 
} 

そして、私のHttpHelperクラス:あなたはJSONで取得

public class HttpHelper { 

@RequiresApi(api = Build.VERSION_CODES.N) 
public static CharSequence GetHttpResponse(String urlString) throws IOException { 
    URL url = new URL(urlString); 
    URLConnection connection = url.openConnection(); 
    if (!(connection instanceof HttpURLConnection)) { 
     throw new IOException("Not an HTTP connection"); 
    } 

    HttpURLConnection httpConnection = (HttpURLConnection) connection; 
    int responseCode = httpConnection.getResponseCode(); 
    if (responseCode != HttpURLConnection.HTTP_OK) { 
     String responseMessage = httpConnection.getResponseMessage(); 
     throw new IOException("HTTP response code: " + responseCode + " " + responseMessage); 

    } 
    InputStream inputStream = httpConnection.getInputStream(); 
    BufferedReader reader = null; 
    try { 
     reader = new BufferedReader(new InputStreamReader(inputStream)); 
     String line; 
     StringBuilder sb = new StringBuilder(); 
     while (true) { 
      line = reader.readLine(); 
      if (line == null) break; 
      sb.append(line); 
     } 
     return sb; 
    } finally { 
     if (reader != null) reader.close(); 
    } 
    } 
} 

答えて

1

アイコン値など、09dまたは50dはアイコンコードです。アイコンを取得するには、http://openweathermap.org/img/w/09d.pngのようなURLを作成する必要があります。

アイコンコードをstringとして保存し、実際にアイコンを表示するにはPicassoを使用することをおすすめします。

String icon = yourJsonObject.getString("icon"); 
String iconUrl = "http://openweathermap.org/img/w/" + icon + ".png"; 

Picasso.with(context).load(iconUrl).into(yourImageView); 
+0

ありがとうございました! :DDその魅力のように働いた! – kennyYice23

+0

thnxxx ........保存された私の日 –

関連する問題