I am working on a google maps project which has a map right at the opening screen.When i start the app after switching off the phone , the map doesnt load at my required level.It shows as a general world map.I got the following error in the LOGCAT:
07-30 10:37:10.851: E/ActivityThread(2122): Service com.google.android.gms.checkin.CheckinService has leaked ServiceConnection gbe@406d5c90 that was originally bound here
07-30 10:37:10.851: E/ActivityThread(2122): android.app.ServiceConnectionLeaked: Service com.google.android.gms.checkin.CheckinService has leaked ServiceConnection gbe@406d5c90 that was originally bound here
07-30 10:37:10.851: E/ActivityThread(2122): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:938)
07-30 10:37:10.851: E/ActivityThread(2122): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:833)
07-30 10:37:10.851: E/ActivityThread(2122): at android.app.ContextImpl.bindService(ContextImpl.java:995)
07-30 10:37:10.851: E/ActivityThread(2122): at android.content.ContextWrapper.bindService(ContextWrapper.java:347)
07-30 10:37:10.851: E/ActivityThread(2122): at gbd.<init>(SourceFile:99)
07-30 10:37:10.851: E/ActivityThread(2122): at gaz.<init>(SourceFile:226)
07-30 10:37:10.851: E/ActivityThread(2122): at java.lang.reflect.Constructor.constructNative(Native Method)
07-30 10:37:10.851: E/ActivityThread(2122): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
07-30 10:37:10.851: E/ActivityThread(2122): at xt.<init>(SourceFile:175)
07-30 10:37:10.851: E/ActivityThread(2122): at bku.a(SourceFile:226)
07-30 10:37:10.851: E/ActivityThread(2122): at bkt.a(SourceFile:298)
07-30 10:37:10.851: E/ActivityThread(2122): at bkt.doInBackground(SourceFile:288)
07-30 10:37:10.851: E/ActivityThread(2122): at android.os.AsyncTask$2.call(AsyncTask.java:185)
07-30 10:37:10.851: E/ActivityThread(2122): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
07-30 10:37:10.851: E/ActivityThread(2122): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
07-30 10:37:10.851: E/ActivityThread(2122): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
07-30 10:37:10.851: E/ActivityThread(2122): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
07-30 10:37:10.851: E/ActivityThread(2122): at java.lang.Thread.run(Thread.java:1019)
I also get the following error:
07-30 10:37:20.133: E/dalvikvm(2794): Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method glt.a
The code for my main activity:
package com.igloo.storelocater;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import android.graphics.PorterDuff;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.androidquery.AQuery;
import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.igloo.adapters.CustomStoreAdapter;
import com.igloo.classes.ConnectionDetector;
import com.igloo.classes.GPSTracker;
import com.igloo.classes.ImageDownloader;
import com.igloo.classes.Store_data;
import com.igloo.constants.Constants.Config;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.Xfermode;
import android.graphics.drawable.Drawable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends FragmentActivity implements LocationListener, android.location.LocationListener {
String URL_store="http://footballultimate.com/storelocator/index.php/api/getStoreData";
String URL_image="http://footballultimate.com/storelocator/resource/uploads/";
private ConnectionDetector cd;
private GoogleMap googleMap;
FragmentManager fragManager;
ProgressDialog progressDialog;
double current_latitude,current_longitude;
int bound_radius=50;
HttpResponse response;
String result;
JSONObject jsonobj;
JSONArray category_array;
ArrayList<String> catordarr,catprearr,store_gallery;
Store_data sobj;
ArrayList<Store_data> list_ordinary,list_premium,list;
Location location;
LocationManager locationManager;
boolean isGPSEnabled,isNetworkEnabled,canGetLocation;
Bitmap pinbit,bitmap;
String src;
ListView list_categories;
CustomStoreAdapter csadp;
JSONObject store_ordinary_data,store_premium_data;
int counter;
String tmp_key;
ImageView iv_category_logo;
View custom_layout;
Bundle state;
LocationManager manager;
GPSTracker gps;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
state=savedInstanceState;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
list_categories=(ListView) findViewById(R.id.list_categories);
custom_layout = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout,null);
iv_category_logo=(ImageView) custom_layout.findViewById(R.id.iv_category_logo);
manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
cd = new ConnectionDetector(MainActivity.this);
if (googleMap == null) {
googleMap = ( (SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.map)).getMap();
}
Config.isInternetPresent = cd.isConnectingToInternet();
if (!Config.isInternetPresent) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
// Shuld be fail icon
builder.setIcon(R.drawable.ic_launcher);
builder.setMessage("Connection Not Available !" + "\n"
+ "Please enable your Internet Connection and restart app");
builder.setTitle("INTERNET CONNECTION");
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
// if(!manager.isProviderEnabled( LocationManager.GPS_PROVIDER ))
// {
// checkgps();
//
// }
}
});
AlertDialog alert = builder.create();
alert.show();
}
else
{
getcurrentlocation();
}
// else{
// if(!manager.isProviderEnabled( LocationManager.GPS_PROVIDER ))
// {
// checkgps();
//
// }
// else
// {
//
// getcurrentlocation();
// }
// }
googleMap.setOnMapClickListener(new OnMapClickListener() {
public void onMapClick(LatLng arg0) {
Intent i=new Intent(getApplicationContext(),MapFullScreen.class);
startActivity(i);
}
});
googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker arg0) {
String store_title=arg0.getTitle();
for(int i=0;i<list.size();i++)
{
Store_data s=list.get(i);
if(store_title.equals(s.store_name))
{
Bundle b=new Bundle();
b.putSerializable("store_details",s);
Intent in= new Intent(getApplicationContext(),StoreFinal.class);
in.putExtras(b);
startActivity(in);
}
}
}
});
}
//public void checkgps()
//{
// AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")
// .setCancelable(false)
// .setPositiveButton("Goto Settings Page To Enable GPS",
// new DialogInterface.OnClickListener(){
// public void onClick(DialogInterface dialog, int id){
// Intent callGPSSettingIntent = new Intent(
// android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
// startActivityForResult(callGPSSettingIntent,0);
// }
// });
// alertDialogBuilder.setNegativeButton("Cancel",
// new DialogInterface.OnClickListener(){
// public void onClick(DialogInterface dialog, int id){
// dialog.cancel();
// }
// });
// AlertDialog alert = alertDialogBuilder.create();
// alert.show();
//}
//@Override
//protected void onActivityResult(int arg0, int arg1, Intent arg2) {
// if(manager.isProviderEnabled( LocationManager.GPS_PROVIDER))
// {
// if(cd.isConnectingToInternet())
// {
// getcurrentlocation();
// }
// else
// {
// AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// alertDialogBuilder.setMessage("Internet is mandatory for this application,\n connect and restart the app")
// .setCancelable(false)
// .setNeutralButton("OK",new DialogInterface.OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// dialog.cancel();
//
// }
// });
// AlertDialog alert = alertDialogBuilder.create();
// alert.show();
// }
// }
// else
// {
// AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// alertDialogBuilder.setMessage("GPS is mandatory for this application")
// .setCancelable(false)
// .setNeutralButton("OK",new DialogInterface.OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// dialog.cancel();
//
// }
// });
// AlertDialog alert = alertDialogBuilder.create();
// alert.show();
// }
//}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void getcurrentlocation()
{
// locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// // Creating a criteria object to retrieve provider
// Criteria criteria = new Criteria();
// //Getting the name of the best provider
// String provider = locationManager.getBestProvider(criteria, true);
//
// Location location = locationManager.getLastKnownLocation(provider);
// if(location!=null)
// {
// current_latitude = location.getLatitude();
// current_longitude = location.getLongitude();
// initialiseMap();
// }
// locationManager.requestLocationUpdates(provider,20000, 0, this);
gps=new GPSTracker(getApplicationContext());
if(gps.canGetLocation())
{
current_latitude=gps.getLatitude();
current_longitude=gps.getLongitude();
initialiseMap();
}
else
{
gps.showSettingsAlert();
}
}
public void initialiseMap()
{
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
else
{
//MapsInitializer.initialize(MainActivity.this);
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
//googleMap.getUiSettings().setCompassEnabled(true);
// UiSettings uiSettings = googleMap.getUiSettings();
// uiSettings.setMyLocationButtonEnabled(true);
}
//locationManager.requestLocationUpdates(provider, 20000, 0, this);
LatLng latLng = new LatLng(current_latitude, current_longitude);
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
// Zoom in the Google Map
//googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 12f));
new RetrieveStoreDetails().execute();
}
public class RetrieveStoreDetails extends AsyncTask<String,Void,Void>
{
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("Processing...");
progressDialog.setMessage("Please wait...");
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected Void doInBackground(String... arg0) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL_store);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("current_latitude",""+current_latitude));
pairs.add(new BasicNameValuePair("current_longitude",""+current_longitude));
pairs.add(new BasicNameValuePair("bound_radius",""+bound_radius));
try {
httppost.setEntity(new UrlEncodedFormEntity(pairs));
response = httpclient.execute(httppost);
result=responsetostring.getResponseBody(response);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result1) {
try{
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}
catch(Exception e){
e.printStackTrace();
}
finally
{
progressDialog.dismiss();
}
getstorevalues(result);
}
}
public void getstorevalues(String result)
{
if(result!=null)
{
try {
list_ordinary=new ArrayList<Store_data>();
list_premium=new ArrayList<Store_data>();
list=new ArrayList<Store_data>();
jsonobj=new JSONObject(result);
store_ordinary_data=jsonobj.getJSONObject("store_ordinary_data");
Iterator<?> keys_ordinary = store_ordinary_data.keys();
catordarr=new ArrayList<String>();
while( keys_ordinary.hasNext() ){
String key = (String)keys_ordinary.next();
if( store_ordinary_data.get(key) instanceof JSONArray ){
catordarr.add(key);
}
}
for(int i=0;i<catordarr.size();i++)
{
JSONArray arrsub=store_ordinary_data.getJSONArray(catordarr.get(i));
for(int j=0;j<arrsub.length();j++)
{
sobj=new Store_data();
sobj.store_gallery=new ArrayList<String>();
JSONObject d=arrsub.getJSONObject(j);
sobj.store_name=d.getString("store_name");
sobj.store_image=d.getString("store_image");
sobj.store_address=d.getString("store_address");
sobj.store_phone=d.getString("store_phone");
sobj.store_description=d.getString("store_description");
sobj.store_url=d.getString("store_url");
sobj.store_latitude=d.getString("store_latitude");
sobj.store_longitude=d.getString("store_longitude");
sobj.category=catordarr.get(i);
sobj.store_fb_url=d.getString("store_fb_url");
sobj.store_distance=d.getString("store_distance");
sobj.store_priority=d.getString("store_priority");
JSONArray gallery=d.getJSONArray("store_gallery");
for(int k=0;k<gallery.length();k++)
{
sobj.store_gallery.add(gallery.getString(k));
}
list.add(sobj);
}
}
store_premium_data=jsonobj.getJSONObject("store_premium_data");
Iterator<?> keys_premium = store_premium_data.keys();
catprearr=new ArrayList<String>();
while( keys_premium.hasNext() ){
String key = (String)keys_premium.next();
if( store_premium_data.get(key) instanceof JSONArray ){
catprearr.add(key);
}
}
for(int i=0;i<catprearr.size();i++)
{
JSONArray arrsub=store_premium_data.getJSONArray(catprearr.get(i));
for(int j=0;j<arrsub.length();j++)
{
sobj=new Store_data();
JSONObject d=arrsub.getJSONObject(j);
sobj.store_gallery=new ArrayList<String>();
sobj.store_name=d.getString("store_name");
sobj.store_image=d.getString("store_image");
sobj.store_address=d.getString("store_address");
sobj.store_phone=d.getString("store_phone");
sobj.store_description=d.getString("store_description");
sobj.store_url=d.getString("store_url");
sobj.store_latitude=d.getString("store_latitude");
sobj.store_longitude=d.getString("store_longitude");
sobj.category=catprearr.get(i);
sobj.store_fb_url=d.getString("store_fb_url");
sobj.store_distance=d.getString("store_distance");
sobj.store_priority=d.getString("store_priority");
//checking for gallery
Iterator<?> objkeys=d.keys();
while(objkeys.hasNext())
{
String key=(String)objkeys.next();
if(key.equals("store_gallery"))
{
JSONArray gallery=d.getJSONArray("store_gallery");
for(int k=0;k<gallery.length();k++)
{
sobj.store_gallery.add(gallery.getString(k));
}
}
}
list.add(sobj);
}
}
//Merging two category arrays without duplicates
for(String x:catordarr)
{
if(!catprearr.contains(x))
catprearr.add(x);
}
csadp=new CustomStoreAdapter(MainActivity.this,catprearr,jsonobj);
list_categories.setAdapter(csadp);
Toast.makeText(getApplicationContext(),""+list_categories.getCount(),Toast.LENGTH_LONG).show();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
setvaluesonmap();
}
public void setvaluesonmap()
{
for(int i=0;i<list.size();i++)
{
final Store_data s=list.get(i);
AQuery androidQuery = new AQuery(MainActivity.this);
androidQuery.ajax(URL_image+s.category+".png",Bitmap.class,new AjaxCallback<Bitmap>(){
@Override
public void callback(String url, Bitmap object, AjaxStatus status) {
super.callback(url, object, status);
object=Bitmap.createScaledBitmap(object,68,62,false);
iv_category_logo.setImageBitmap(object);
googleMap.addMarker(new MarkerOptions().title(s.store_name)
.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(MainActivity.this, custom_layout)))
.position(new LatLng(Double.parseDouble(s.store_latitude),Double.parseDouble(s.store_longitude))));
}
});
}
}
@Override
public void onLocationChanged(Location arg0) {
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
public static Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
}
Please help!!
0 comments:
Post a Comment