Image´s im App vom Server/Internet laden??

  • Antworten:18
Markus B.
  • Forum-Beiträge: 636

04.10.2012, 07:20:48 via App

Hi,
das machst du am besten mit dem httpClient und dazu gibt es Tonnen an Beispielen im Netz.

Gruß,
Markus

Antworten
Michele
  • Forum-Beiträge: 1.525

04.10.2012, 18:48:21 via Website

Danke.

Aber ein Client? Den ich selbs schreiben muss?


LG

Antworten
Michele
  • Forum-Beiträge: 1.525

05.10.2012, 04:15:44 via Website

Ich versteh davon zwar nur Bahnhof :*)
Aber werd mich mal durch fressen da.
Das alles immer so kompliziert ist für so ein bisschen :grin: Ohje.


LG

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

05.10.2012, 08:31:04 via Website

Was ist denn daran so schwer? Es kommen die Worte Cookie, Client, Get, Response sowie StatusCode vor. Das ist ganz normales HTTP/Web Handling.

1if (httpEntity != null) {
2// Dein Teil beginnt hier
3}
Es gibt auch andere Möglichkeiten, HttpUrlConnection zum Beispiel. Da ich aber nicht weiß ob Du Dich einloggen musst, Sessions getrackt werden, etc. etc. habe ich Dich an einen universellen Code verwiesen.

Du schaffst das schon.

Antworten
Michele
  • Forum-Beiträge: 1.525

05.10.2012, 17:46:34 via Website

Danke Harald.

Lieb von dir. Bin halt noch im Anfänger Modus :*)
Befasse mich heute Abend mal damit in ruhe.


LG

Antworten
Michele
  • Forum-Beiträge: 1.525

16.10.2012, 10:09:48 via Website

Also habe viel getestet und gelesen.
Aber nichts geht irgendwie.
Etwa es kommt immer Imageload geht nicht oder bla bla :grin:.

Beispiele:

1package de.echooff.android.helloworld;
2
3import android.app.Activity;
4import android.graphics.Bitmap;
5import android.os.Bundle;
6import android.widget.ImageView;
7
8public class MainActivity extends Activity {
9 @Override
10 public void onCreate(Bundle savedInstanceState) {
11 super.onCreate(savedInstanceState);
12 setContentView(R.layout.main);
13 ImageView myImageView = (ImageView) findViewById(R.id.myImageView);
14 ImageDownloader imageDownloader = new ImageDownloader();
15 Bitmap bitmap = imageDownloader.downloadImage("http://echooff.de/Logdog82-Android-Forum-Avatar.png");
16 myImageView.setImageBitmap(bitmap);
17 }
18}
1package de.echooff.android.helloworld;
2
3import java.io.IOException;
4import java.io.InputStream;
5import java.net.MalformedURLException;
6import java.net.URL;
7
8import android.graphics.Bitmap;
9import android.graphics.BitmapFactory;
10
11public class ImageDownloader {
12 public Bitmap downloadImage(String downloadUrl) {
13 InputStream inputStream = null;
14 try {
15 URL url = new URL(downloadUrl);
16 inputStream = url.openStream();
17 return BitmapFactory.decodeStream(inputStream);
18 } catch (MalformedURLException e) {
19 e.printStackTrace();
20 } catch (IOException e) {
21 e.printStackTrace();
22 } finally {
23 if (inputStream != null) {
24 try {
25 inputStream.close();
26 } catch (IOException e) {
27 e.printStackTrace();
28 }
29 }
30 }
31 return null;
32 }
33}

Oder:

1package com.exercise.AndroidWebImage;
2
3import java.io.IOException;
4import java.io.InputStream;
5import java.net.HttpURLConnection;
6import java.net.URL;
7import java.net.URLConnection;
8
9import android.app.Activity;
10import android.graphics.Bitmap;
11import android.graphics.BitmapFactory;
12import android.os.Bundle;
13import android.widget.ImageView;
14
15public class AndroidWebImage extends Activity {
16
17String image_URL=
18 "http://4.bp.blogspot.com/_C5a2qH8Y_jk/StYXDpZ9-WI/AAAAAAAAAJQ/sCgPx6jfWPU/S1600-R/android.png";
19
20 /** Called when the activity is first created. */
21 @Override
22 public void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.main);
25
26 ImageView bmImage = (ImageView)findViewById(R.id.image);
27 BitmapFactory.Options bmOptions;
28 bmOptions = new BitmapFactory.Options();
29 bmOptions.inSampleSize = 1;
30 Bitmap bm = LoadImage(image_URL, bmOptions);
31 bmImage.setImageBitmap(bm);
32 }
33
34 private Bitmap LoadImage(String URL, BitmapFactory.Options options)
35 {
36 Bitmap bitmap = null;
37 InputStream in = null;
38 try {
39 in = OpenHttpConnection(URL);
40 bitmap = BitmapFactory.decodeStream(in, null, options);
41 in.close();
42 } catch (IOException e1) {
43 }
44 return bitmap;
45 }
46
47private InputStream OpenHttpConnection(String strURL) throws IOException{
48 InputStream inputStream = null;
49 URL url = new URL(strURL);
50 URLConnection conn = url.openConnection();
51
52 try{
53 HttpURLConnection httpConn = (HttpURLConnection)conn;
54 httpConn.setRequestMethod("GET");
55 httpConn.connect();
56
57 if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
58 inputStream = httpConn.getInputStream();
59 }
60 }
61 catch (Exception ex)
62 {
63 }
64 return inputStream;
65}
66
67}

Wie siehts bei euch aus?Geht das bei euch?Irgendwas davon?


LG

Antworten
Michele
  • Forum-Beiträge: 1.525

16.10.2012, 10:32:09 via Website

Hier nur für dich =)

Hochgeladen : https://rapidshare.com/files/2365222560/log.txt

PS: Das Programm Stop sich einfach immer.
<uses-permission android:name="android.permission.INTERNET"/> ist gesetzt.




LG

— geändert am 16.10.2012, 10:33:00

Antworten
Michele
  • Forum-Beiträge: 1.525

16.10.2012, 10:36:15 via Website

Rafael K.
Tja ... 100 Punkte an Harald :)

android.os.NetworkOnMainThreadException

Netzwerk Kommunikation muss in neueren Android Versionen in einem separaten Thread (z.B. AsyncTask) erfolgen,
sonst knallts.

Na klasse :grin: Und wie mache ich das nun? Damit habe ich mich auch noch nicht so beschäftigt :*)
Kaum hat man das eine geschafft so kommt das nächste :grin:



LG

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

16.10.2012, 10:41:58 via Website

Antworten
Michele
  • Forum-Beiträge: 1.525

16.10.2012, 10:43:32 via Website

Ja gerne :*) Ihr müsst mir nur helfen.

Um was geht es genau bei "AsyncTask". Was muss ich wissen?
Oder wo finde ich was zum lernen und verstehen?


LG

Antworten
Michele
  • Forum-Beiträge: 1.525

16.10.2012, 10:50:27 via Website

Ach ups...Die habe ich garnicht gesehen..Sorryyy mein fehler.:*)
Dann danke erstmal und werde mir das mal angucken.



LG

Antworten
Michele
  • Forum-Beiträge: 1.525

16.10.2012, 20:55:56 via Website

Habe das nun z.B so geschrieben.

1public class laodSomeStuff extends AsyncTask<String, Integer, String> {
2
3 @Override
4 protected String doInBackground(String... params) {
5
6 ImageView myImageView = (ImageView) findViewById(R.id.imageView1);
7 ImageDownloader imageDownloader = new ImageDownloader();
8 Bitmap bitmap = imageDownloader.downloadImage("http://echooff.de/Logdog82-Android-Forum-Avatar.png");
9 myImageView.setImageBitmap(bitmap);
10
11 return null;
12 }
13 }

Nun Startet das App *freu* aber er lädt dafür das Bild noch nicht. Bleibt alles weiß.
Habe das oben aus dem ersten Beispiel alles genommen.

LG

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

16.10.2012, 21:27:36 via Website

Hast Du überhaupt mal eine Passage aus der Doku gelesen, oder einfach nur den Quellcode kopiert, ein bisschen verändert und weißt eigentlich garnicht was der macht? ;-) Sei ehrlich :D

Der Gag an AsyncTask ist doch grade, dass er verschiedene Methoden anbietet, die für verschiedene Dinge gedacht sind und die doInBackground Methode ist NICHT dafür da auf die Oberfläche zuzugreifen!

Siehe hier:
http://developer.android.com/reference/android/os/AsyncTask.html

Abschnitt "The 4 Steps"

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

16.10.2012, 21:28:33 via App

... und das soll gehen?

Du befindest Dich während doInBackground in einem eigenständigen Thread. Die Activity mit dem ImageView kann während der Thread läuft komplett weg sein.

Du lädst das Objekt während doInBackground aus dem Web und retournierst das. Dieses Objekt wird Dir dann in onPostExecute als Parameter geliefert und dort kanst Du das dann in die ImageView setzen.

— geändert am 16.10.2012, 21:30:40

Antworten