My code is as follows:
public class MainActivity extends Activity {
ImageView[] targetImage = new ImageView[5];
private InputStream OpenHttpConnection(String urlString) throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection)) {
throw new IOException("Not an HTTP connection");
}
try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
}
catch (Exception ex) {
Log.d("Networking", ex.getLocalizedMessage());
throw new IOException("Error connecting");
}
return in;
}
private Bitmap DownloadImage(String URL) {
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (IOException e1) {
Log.d("NetworkingActivity", e1.getLocalizedMessage());
}
return bitmap;
}
private class DownloadImageTask extends AsyncTask<String, Bitmap, Long> {
//---takes in a list of image URLs in String type---
protected Long doInBackground(String... urls) {
long imagesCount = 0;
for ( int i = 0; i < urls.length; i++) {
//---download the image---
Bitmap imageDownloaded = DownloadImage(urls[i]);
if (imageDownloaded != null ) {
//---increment the image count---
imagesCount++;
try {
//---insert a delay of 3 seconds---
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//---return the image downloaded---
publishProgress(imageDownloaded);
}
}
//---return the total images downloaded count---
return imagesCount;
}
//---display the image downloaded---
protected void onProgressUpdate(Bitmap... bitmap) {
if(bitmap.length > 0) {
for(int i = 0; i < bitmap.length; i++) {
targetImage[i].setImageBitmap(bitmap[i]);
}
}
// tIV[values[i]].setImageBitmap(tBM[values[i]]);
}
//---when all the images have been downloaded---
protected void onPostExecute(Long imagesDownloaded) {
Toast.makeText(getBaseContext(),
"Total" + imagesDownloaded + " images downloaded" ,
Toast.LENGTH_LONG).show();
}
}
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
targetImage[0] = (ImageView)findViewById(R.id.target0);
targetImage[1] = (ImageView)findViewById(R.id.target1);
targetImage[2] = (ImageView)findViewById(R.id.target2);
new DownloadImageTask().execute(
"http://solutionboat.com/work_2/asset/images/sobin.jpg" ,
"http://solutionboat.com/work_2/asset/images/shamol.jpg",
"http://solutionboat.com/work_2/asset/images/rifat.jpg"
);
ViewFlipper flipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
flipper.startFlipping();
}
}
Import picasso library in your project:
http://square.github.io/picasso/
And try this:
public class MainActivity extends Activity {
ImageView[] targetImage = new ImageView[5];
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
targetImage[0] = (ImageView)findViewById(R.id.target0);
targetImage[1] = (ImageView)findViewById(R.id.target1);
targetImage[2] = (ImageView)findViewById(R.id.target2);
Picasso.with(MainActivity.this).load("http://solutionboat.com/work_2/asset/images/sobin.jpg").into(targetImage[0]);
Picasso.with(MainActivity.this).load("http://solutionboat.com/work_2/asset/images/shamol.jpg").into(targetImage[1]);
Picasso.with(MainActivity.this).load("http://solutionboat.com/work_2/asset/images/rifat.jpg").into(targetImage[2]);
}
}
Related
My json array contains two images, how to display that in activity? Those images are in the form of url. After and before are the imageviews, I want to know what is image download task and how can I use that.
after = (ImageView) findViewById(R.id.bfrdoogret);
before = (ImageView) findViewById(R.id.afterdogret);
}
class BackGround extends AsyncTask<String, String, String> {
#Override
protected void onPreExecute() {
super.onPreExecute();
dialog = ProgressDialog.show(Serialno.this, "",
"Searching. Please wait...", true);
dialog.setCancelable(true);
dialog.show();
}
#Override
protected String doInBackground(String... params)
{
String values=getvalues();
return values;
}
#Override
protected void onPostExecute(String s)
{
dialog.hide();
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
dis.setText(district);
city.setText(cit);
serialno.setText(serial_no);
gender.setText(gende);
loction.setText(latitude+ longitude);
}
}
public String getvalues()
{
String uri = "http://www.lorryguru.com/domains/dogs/retusingsno.php?district="+District+"&serialno="+SerialNo;
HttpGet httpGet = new HttpGet(uri);
HttpClient client = new DefaultHttpClient();
HttpResponse response;
StringBuilder stringBuilder = new StringBuilder();
try {
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1)
{
stringBuilder.append((char) b);
}
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
JSONArray arr = new JSONArray(stringBuilder.toString());
//result = jsonObj.getJSONArray(TAG_RESULT);
JSONObject c = arr.getJSONObject(0);
id = c.getString(TAG_ID);
district = c.getString(TAG_DISTRICT);
cit = c.getString(TAG_CITY);
serial_no = c.getString(TAG_SERIALNO);
gende = c.getString(TAG_GENDER);
wareno = c.getString(TAG_WARENO);
befor = c.getString(TAG_BEFORE);
afte = c.getString(TAG_AFTER);
latitude = c.getString(TAG_LATITUDE);
longitude = c.getString(TAG_LONGITUDE);
return "success";
}
catch (JSONException e)
{
return "accessproblem";
//e.printStackTrace();
}
Add this dependency in gradle compile 'com.squareup.picasso:picasso:2.5.2'
As per your getValues() method you will get url like this
String yourImageUrlHere= c.getString("whatever is your key");
Picasso.with(this)
.load(yourImageUrlHere)
.into(yourImageViewHere);
You have to add another async task after to your existing one, Code is following below.
class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap>
{
private final WeakReference<ImageView> imageViewReference;
String murl;
ImageView showView;
public ImageDownloaderTask(ImageView imageView,String url) {
imageViewReference = new WeakReference<ImageView>(imageView);
murl=url;
showView=imageView;
}
#Override
protected Bitmap doInBackground(String... params) {
final Bitmap bitmap=downloadBitmap(murl);
if(murl!=null && bitmap!=null)
{
addBitmapToMemoryCache(murl, bitmap);
}
return bitmap;
}
#Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
}
#Override
protected void onPostExecute(Bitmap bitmap) {
if (isCancelled()) {
bitmap = null;
}
if (imageViewReference != null) {
final ImageView imageView = imageViewReference.get();
if (imageView != null) {
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
//addBitmapToMemoryCache(murl, bitmap);
}
}
}
}
}
private Bitmap downloadBitmap(String url)
{
HttpURLConnection urlConnection = null;
Bitmap bitmap;
try {
URL uri = new URL(url);
urlConnection = (HttpURLConnection) uri.openConnection();
int statusCode = urlConnection.getResponseCode();
if (statusCode != HttpStatus.SC_OK)
{
return null;
}
InputStream inputStream = urlConnection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
}
catch (Exception e)
{
urlConnection.disconnect();
Log.w("ImageDownloader", "Error downloading image from " + url);
}
finally
{
if (urlConnection != null) {
urlConnection.disconnect();
}
}
return null;
}
Use Picasso to download image asynchronously from url.
You can use Picasso:
Picasso.with(this)
.load(url)
.into(imageView);
I have a problem in API 8 with AsyncTask...
Here is my code...
try{
new loadPhotos().execute(""+USER._id,"date","DESC");
}catch(Exception e){
e.printStackTrace();
}
Before you ask... YES I am desperate, so I surrounded EVERYTHING with try{}catch
public class loadPhotos extends AsyncTask<String,Object,Void>{
ProgressBar pb;
ImageView img;
TableRow.LayoutParams paramsImage;
List<String> urlsOfImages;
TableLayout tl;
TableRow tr;
LayoutParams lp;
int numberOfPhotos=0;
#Override
protected void onPreExecute(){
urlsOfImages = new ArrayList<String>(); //There is stored urls of all images ( www.example.com/image1.jpg ... etc)
try {
allUserPhotoBitmaps.clear(); //allUserPhotoBitmaps is List<Bitmap>
pb = (ProgressBar) findViewById(R.id.profile_photos_progress_bar);
pb.setVisibility(View.VISIBLE);
tl = (TableLayout) findViewById(R.id.profile_photos_table_layout);
tl.removeAllViews();
tr = new TableRow(Profile.this);
lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tr.setLayoutParams(lp);
}catch(Exception e){
Toast.makeText(Profile.this, "Error in onPreExecute", Toast.LENGTH_LONG).show();
}
}
#Override
protected Void doInBackground(String... arg) {
try{
// This function basicaly returns List<HashMap<String,String>> with informations about photos ( web_path, latitude, longitude, city, etc...)
allUserPhotoInformations = myDb.getUrlsOfUserImages(arg[0],arg[1],arg[2]);
}catch(Exception e){
Toast.makeText(Profile.this, "Error downloading images", Toast.LENGTH_SHORT).show();
}
if ( allUserPhotoInformations != null ) {
for (int i=0 ; i < allUserPhotoInformations.size() ; i++){
try{
Bitmap bm = getBitmapFromURL(allUserPhotoInformations.get(i).get("file_path"));
allUserPhotoBitmaps.add(bm);
publishProgress(bm,i);
}
catch(Exception e){
return null;
}
}
}
return null;
}
#Override
protected void onProgressUpdate(Object... arg){
img = new ImageView(getBaseContext());
paramsImage = new TableRow.LayoutParams( (((int)screenWidth)/2)-16 , (((((int)screenWidth)/2)-15)/16)*11 );
paramsImage.setMargins(10,10,0,0);
img.setLayoutParams(paramsImage);
img.setBackgroundColor(Color.parseColor("#FF000000"));
try{
img.setImageBitmap((Bitmap) arg[0]);
}catch(Exception e){
Toast.makeText(Profile.this,"Cannot put Bitmap into ImageView",Toast.LENGTH_LONG).show();
}
img.setVisibility(View.VISIBLE);
img.setOnClickListener(new ImageListener((Integer)arg[1])); //here I passing index to onClickListener
tr.addView(img);
if ( numberOfPhotos==1 ){
try{
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}catch(Exception e){
e.printStackTrace();
Toast.makeText(Profile.this,"Cannot inflate tableLayout",Toast.LENGTH_LONG).show();
}
tr = new TableRow(Profile.this);
tr.setLayoutParams(lp);
numberOfPhotos--;
}
else {
numberOfPhotos++;
}
}
#Override
protected void onPostExecute(Void arg){
pb.setVisibility(View.GONE);
userPhotos.setText("uploaded: "+allUserPhotoBitmaps.size()+" photos");
if ( numberOfPhotos==1 ){
try{
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}catch(Exception e){
e.printStackTrace();
Toast.makeText(Profile.this,"Cannot inflate tableLayout",Toast.LENGTH_LONG).show();
}
tr = new TableRow(Profile.this);
tr.setLayoutParams(lp);
}
}
In my device ( API > 15 ) everything works great, but in API 10 it crashes the app... I you want , I can provide also OnClickListener or some othere methods...
Yes, here ... How I download pictures :
public Bitmap getBitmapFromURL(String src) {
try {
java.net.URL url = new java.net.URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
double width;
double height;
width = (screenWidth)/myBitmap.getRowBytes();
if ( myBitmap.getWidth() > myBitmap.getHeight() ){
Log.w("size","landscape");
height = ((myBitmap.getRowBytes()*width)/16)*11;
width = (height/11)*16;
}
else {
Log.w("size","protrait");
height = ((myBitmap.getRowBytes()*width)/11)*16;
width = (height/16)*11;
}
Bitmap bitmap = Bitmap.createScaledBitmap(myBitmap, (int)width, (int)height, true);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(Profile.this, "Error parsing image to bitmap", Toast.LENGTH_LONG).show();
return null;
}
}
Any help ?
call new loadPhotos().execute(""+USER._id,"date","DESC"); in onCreate and Use Asynctask and try to avoid load in main thread. Your application crash one of the main reason may be if you are calling the methode in main thread.
Ex:
String zoomouturl = "your url";
new ImageDownload().execute(zoomouturl);
Try
public class ImageDownload extends AsyncTask<String, Void, String> {
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;
loadBitmap(zoomouturl, bmOptions);
return zoomouturl;
}
protected void onPostExecute(String imageUrl) {
if (!imageUrl.equals("")) {
Constants._image.setImageBitmap(bm);
} else {
Toast.makeText(this,
"not found proper bitmap.. ", Toast.LENGTH_LONG)
.show();
}
}
}
and
public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bm = BitmapFactory.decodeStream(in, null, options);
in.close();
} catch (IOException e1) {
}
return bm;
}
private static InputStream OpenHttpConnection(String strURL)
throws IOException {
InputStream inputStream = null;
URL url = new URL(strURL);
URLConnection conn = url.openConnection();
try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("GET");
httpConn.connect();
if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
}
} catch (Exception ex) {
}
return inputStream;
}
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Android image view from url
I am trying to fetch the image from url and load in imageView, but I cannot encode the url string, please let me know how to encode this.
Please find the code & url used for your reference.
URL: http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG
Code
String link=URLEncoder.encode(urlStr);
bitmap=loadBitmap(link);
public static Bitmap loadBitmap(String url) {
Bitmap bitmap = null;
try {
InputStream in = new java.net.URL(url).openStream();
bitmap = BitmapFactory.decodeStream(in);
} catch (Exception e) {
}
return bitmap;
}
Use this Code it will fetch the image from server
String URL = "http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG";
private InputStream OpenHttpConnection(String urlString) throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
} catch (Exception ex) {
throw new IOException("Error connecting");
}
return in;
}
private Bitmap DownloadImage(String URL) {
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
final String msg = e1.getMessage();
handler.post(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "" + msg, Toast.LENGTH_SHORT).show();
}
});
}
return bitmap;
}
FYI, URLEncoder.encode(String) has been deprecated.
Reference:
http://developer.android.com/reference/java/net/URLEncoder.html
You can encode the url as below:
String URL = "http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG";
String encodeUrl=URLEncoder.encode(URL, "utf-8");
private Bitmap DownloadImage(String URL) {
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
final String msg = e1.getMessage();
handler.post(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "" + msg, Toast.LENGTH_SHORT).show();
}
});
}
return bitmap;
}
I have create example for How to display image from URL. Use that example it works for me and i also check it by replace you image url.
Please Use below code for download and display image into imageview.
public class MainActivity extends Activity {
ImageView my_img;
Bitmap mybitmap;
ProgressDialog pd;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView mImgView1 = (ImageView) findViewById(R.id.mImgView1);
DownloadImageFromURL mDisImgFromUrl = new DownloadImageFromURL(mImgView1);
mDisImgFromUrl.execute("http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG");
}
private class DownloadImageFromURL extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
#Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd = new ProgressDialog(MainActivity.this);
pd.setMessage("Loading...");
pd.show();
}
public DownloadImageFromURL(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
pd.dismiss();
}
}
}
I have a set of buttons and i want them to be visible only when the image is loaded..and the progressbar to hide,how can i do that..whenever use onPreExecute() or write
buttonname.setVisibility(View.VISIBLE);
in post execute it stops loading the image..Here is what i am using..please help me out i am stuck
public class Main extends Activity{
ImageView image,next,back;
Button a;
static int fullWidth;
static int fullHeight;
ProgressBar progressbar;
Button setWallpaper;
private class BackgroundTask extends AsyncTask <String, Void, Bitmap> {
protected Bitmap doInBackground(String...url) {
//--- download an image ---
Bitmap bitmap = DownloadImage(url[0]);
return bitmap;
}
protected void onPostExecute(Bitmap bitmap) {
ImageView image = (ImageView) findViewById(R.id.imageView1);
bitmaptwo=bitmap;
image.setImageBitmap(bitmap);
image.setScaleType(ScaleType.FIT_CENTER);
}
}
private InputStream OpenHttpConnection(String urlString)
throws IOException
{InputStream in = null;
int response= -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection ))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK){
in = httpConn.getInputStream();
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");
}
return in;
}
private Bitmap DownloadImage(String URL)
{
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
}
catch (IOException e1){
Toast.makeText(this,e1.getLocalizedMessage(),
Toast.LENGTH_LONG).show();
e1.printStackTrace();
}
return bitmap;
}
public static Bitmap bitmaptwo;
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
try
{
new BackgroundTask().execute("http://meluha.in/wp-content/uploads/1.jpg");
}
catch(Exception e)
{
e.printStackTrace();
}
setWallpaper = (Button) findViewById(R.id.abcd);
ImageView next = (ImageView) findViewById(R.id.next);
ImageView back = (ImageView) findViewById(R.id.back);
setWallpaper.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
WallpaperManager wManager;
try {
// Bitmap bitmap = ((BitmapDrawable)imageView1.getDrawable()).getBitmap();
wManager = WallpaperManager.getInstance(getApplicationContext());
fullWidth = wManager.getDesiredMinimumWidth();
fullHeight = wManager.getDesiredMinimumHeight();
Bitmap bitmapResized = Bitmap.createScaledBitmap(bitmaptwo, fullWidth, fullHeight,true);
wManager.setBitmap(bitmapResized);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
Add this code yo your onPostExecute method:
button1.setVisibility(View.VISIBLE);
button2.setVisibility(View.VISIBLE);
//....
progressbar.setVisibility(View.INVISIBLE);
Hi everyone I've check the post on the set wallpaper from URL but I am really new to programing and I still do not undertand it, could someone provide me with an example, basically I have an image on a server and I want to push a button and set it as the phone wallpaper thank you again for the help
public class TestingThree extends Activity {
ImageView image;
private class BackgroundTask extends AsyncTask
<String, Void, Bitmap> {
protected Bitmap doInBackground(String...url) {
//--- download an image ---
Bitmap bitmap = DownloadImage(url[0]);
return bitmap;
}
protected void onPostExecute(Bitmap bitmap) {
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bitmap);
}
}
private InputStream OpenHttpConnection(String urlString)
throws IOException
{InputStream in = null;
int response= -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection ))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK){
in = httpConn.getInputStream();
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");
}
return in;
}
private Bitmap DownloadImage(String URL)
{
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
}
catch (IOException e1){
Toast.makeText(this,e1.getLocalizedMessage(),
Toast.LENGTH_LONG).show();
e1.printStackTrace();
}
return bitmap;
}
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.wallpaper);
new BackgroundTask().execute("http://myglobaljournal.com/images/imagetest.jpg");
Button setWallpaper = (Button) findViewById(R.id.button3);
setWallpaper.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
WallpaperManager wManager;
Bitmap bitmap;
try {
bitmap = BitmapFactory.decodeFile(null);
wManager = WallpaperManager.getInstance(getApplicationContext());
wManager.setBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
am trying to implement it to the button at the bottom where i pull the image from the link and set it directly as a wallpaper
thank you again
try this:
ImageView image;
private class BackgroundTask extends AsyncTask
<String, Void, Bitmap> {
protected Bitmap doInBackground(String...url) {
//--- download an image ---
Bitmap bitmap = DownloadImage(url[0]);
return bitmap;
}
protected void onPostExecute(Bitmap bitmap) {
ImageView image = (ImageView) findViewById(R.id.imageView1);
bitmaptwo=bitmap;
image.setImageBitmap(bitmap);
}
}
private InputStream OpenHttpConnection(String urlString)
throws IOException
{InputStream in = null;
int response= -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection ))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK){
in = httpConn.getInputStream();
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");
}
return in;
}
private Bitmap DownloadImage(String URL)
{
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
}
catch (IOException e1){
Toast.makeText(this,e1.getLocalizedMessage(),
Toast.LENGTH_LONG).show();
e1.printStackTrace();
}
return bitmap;
}
public Bitmap bitmaptwo;
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.wallpaper);
new BackgroundTask().execute("http://myglobaljournal.com/images/imagetest.jpg");
Button setWallpaper = (Button) findViewById(R.id.button3);
setWallpaper.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
WallpaperManager wManager;
try {
// bitmap = BitmapFactory.decodeFile(null);
wManager = WallpaperManager.getInstance(getApplicationContext());
wManager.setBitmap(bitmaptwo);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
Required Permission:
<uses-permission android:name="android.permission.SET_WALLPAPER"/>