Pages

Tuesday, 27 December 2016

Avatar Grabber Palringo, Nimbuzz & Facebook using Picasso Library for Android



################ Avatar Grabber FB Nimbuzz Palringo ################

- Download Profile Images into ImageView 
- Picasso Image Library for Loading Images 
- Pass the Target URL to default Download Manager
- Save/Write Images to External Device Storage (specified path)


Download APK


Download source from Github
Following are the classes used for downloading Avatars via Default Android's Download Manager:

package com.blogspot.dbh4ck.avatargrabberdb.Fragments;
import android.app.DownloadManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.blogspot.dbh4ck.avatargrabberdb.R;
import com.squareup.picasso.Picasso;
import java.io.File;
public class FacebookFragment extends Fragment implements View.OnClickListener{
public EditText getTarFb;
private Button btn_ok_fb, btnSave_Fb;
public ImageView imgFb;
private Bitmap bmpFb;
public FacebookFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_facebook, container, false);
getTarFb = (EditText) v.findViewById(R.id.txtUserFb);
btn_ok_fb = (Button) v.findViewById(R.id.btnokFb);
btnSave_Fb = (Button) v.findViewById(R.id.btnsaveFb);
imgFb = (ImageView) v.findViewById(R.id.imgviewFb);
btn_ok_fb.setOnClickListener(this);
btnSave_Fb.setOnClickListener(new View.OnClickListener() {
boolean success = false;
@Override
public void onClick(View view) {
File direct = new File(Environment.getExternalStorageDirectory() + "/Facebook_Avatars");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse("http://graph.facebook.com/"+getTarFb.getText().toString()+"/picture");
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("AvatarGrabberByDB")
.setDescription("coded by db~@nc")
.setDestinationInExternalPublicDir("/Facebook_Avatars", getTarFb.getText().toString()+".jpg");
mgr.enqueue(request);
success = true;
if(success){
Toast.makeText(getActivity(),"Imaged Saved!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Error!", Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
@Override
public void onClick(View view) {
Picasso.with(getContext())
.load("http://graph.facebook.com/"+getTarFb.getText().toString()+"/picture")
.resize(350,350)
.into(imgFb);
}
}


package com.blogspot.dbh4ck.avatargrabberdb.Fragments;
import android.app.DownloadManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.blogspot.dbh4ck.avatargrabberdb.R;
import com.squareup.picasso.Picasso;
import java.io.File;
public class NimbuzzFragment extends Fragment implements View.OnClickListener{
public EditText getTarNimb;
private Button btn_ok_nimb, btnSave_Nimb;
public ImageView imgNimb;
private Bitmap bmpNimb;
public NimbuzzFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_nimbuzz, container, false);
getTarNimb = (EditText) v.findViewById(R.id.txtUserNimb);
btn_ok_nimb = (Button) v.findViewById(R.id.btnokNimb);
btnSave_Nimb = (Button) v.findViewById(R.id.btnsaveNimb);
imgNimb = (ImageView) v.findViewById(R.id.imgviewNimb);
btn_ok_nimb.setOnClickListener(this);
btnSave_Nimb.setOnClickListener(new View.OnClickListener() {
boolean success = false;
@Override
public void onClick(View view) {
File direct = new File(Environment.getExternalStorageDirectory() + "/Nimbuzz_Avatars");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse("http://avatar.nimbuzz.com/getAvatar?jid="+getTarNimb.getText().toString()+"%40nimbuzz.com");
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("AvatarGrabberByDB")
.setDescription("coded by db~@nc")
.setDestinationInExternalPublicDir("/Nimbuzz_Avatars", getTarNimb.getText().toString()+".jpg");
mgr.enqueue(request);
success = true;
if(success){
Toast.makeText(getActivity(),"Imaged Saved!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Error!", Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.btnokNimb:
Picasso.with(getContext())
.load("http://avatar.nimbuzz.com/getAvatar?jid="+getTarNimb.getText().toString()+"%40nimbuzz.com")
.into(imgNimb);
}
}
}


package com.blogspot.dbh4ck.avatargrabberdb.Fragments;
import android.app.DownloadManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.blogspot.dbh4ck.avatargrabberdb.R;
import com.squareup.picasso.Picasso;
import java.io.File;
public class PalringoFragment extends Fragment implements View.OnClickListener{
public EditText getTarPal;
private Button btn_ok_pal, btnSave_Pal;
public ImageView imgPal;
private Bitmap bmpPal;
public PalringoFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_palringo, container, false);
getTarPal = (EditText) v.findViewById(R.id.txtUserPal);
btn_ok_pal = (Button) v.findViewById(R.id.btnokPal);
btnSave_Pal = (Button) v.findViewById(R.id.btnsavePal);
imgPal = (ImageView) v.findViewById(R.id.imgviewPal);
btn_ok_pal.setOnClickListener(this);
btnSave_Pal.setOnClickListener(new View.OnClickListener() {
boolean success = false;
@Override
public void onClick(View view) {
File direct = new File(Environment.getExternalStorageDirectory() + "/Palringo_Avatars");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse("http://www.palringo.com/showavatar.php?id="+getTarPal.getText().toString()+"&type=g");
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("AvatarGrabberByDB")
.setDescription("coded by db~@nc")
.setDestinationInExternalPublicDir("/Palringo_Avatars", getTarPal.getText().toString()+".jpg");
mgr.enqueue(request);
success = true;
if(success){
Toast.makeText(getActivity(),"Imaged Saved!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Error!", Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
@Override
public void onClick(View v) {
Picasso.with(getContext())
.load("http://www.palringo.com/showavatar.php?id="+getTarPal.getText().toString())
.into(imgPal);
}
}


MainActivity Layout:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_layout"
android:orientation="vertical"
tools:context=".MainActivity"
android:fitsSystemWindows="true">
<!-- toolbar -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<!-- tablayout to display tabs -->
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabIndicatorColor="@color/white"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:minHeight="?attr/actionBarSize"
android:theme="@style/AppTheme.NoActionBar" />
<!-- View pager to swipe views -->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="fill_parent"/>
</LinearLayout>


Identical Layouts for each Fragment:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transcriptMode="normal"
android:fillViewport="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragmentfacebook"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true">
<Space android:layout_width="match_parent"
android:layout_height="2dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtview3"
android:text="Facebook Avatar Grabber"
android:typeface="serif"
android:textAlignment="center"
android:textStyle="normal|bold"
tools:textColor="@color/colorPrimary"
android:textSize="18sp" />
<Space android:layout_width="match_parent"
android:layout_height="10dp" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/txtUserFb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Facebook ID"
android:inputType="text"
android:layout_below="@+id/txtview3"
android:textColor="@color/colorPrimaryDark" />
</android.support.design.widget.TextInputLayout>
<Button
android:layout_height="wrap_content"
android:text="OK"
android:textSize="16sp"
android:id="@+id/btnokFb"
android:layout_below="@+id/txtUserFb"
style="@style/Widget.AppCompat.Button.Colored"
android:textAllCaps="false"
android:textAlignment="center"
android:layout_width="93dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Download"
android:textSize="16sp"
android:id="@+id/btnsaveFb"
style="@style/Widget.AppCompat.Button.Colored"
android:textAllCaps="false"
android:textAlignment="center"
tools:gravity="center_horizontal" />
<TextView android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textAlignment="center"
android:id="@+id/notefb"
android:text="Note: Image will be saved to: /sdcard/Facebook_Avatars"
android:textColor="@color/colorPrimaryDark" />
<ImageView android:layout_gravity="fill"
android:paddingLeft="16dp"
android:paddingBottom="16dp"
android:layout_width="match_parent"
android:layout_height="350dp"
android:layout_below="@+id/notefb"
android:id="@+id/imgviewFb"
android:scaleType="fitCenter" />
</LinearLayout>
</RelativeLayout>
</ScrollView>

No comments:

Post a Comment