MapView doesn't display tiles - debugging strategies? - android

There are a number of posts (both here & elsewhere) about why a MapView might not be displaying tile info (personally, I've liked Android "Hello, MapView" Tutorial - Map Tiles Do Not Load, but there are other good ones, too).
My question is slightly different: I'm not getting tile info to show up (on my handset or in the emulator), and I'm looking for advice on what to try in order to debug this problem. As far as I can tell I've correctly located my debug.keystore, and used the Java JDK keytool to get the signature from it, which I then plugged into the Google web page, and then plugged THAT key back into my XML file. The app runs ok, it just doesn't display any tiles.
I was hoping that if I did something wrong here I'd see an error message in, say, logcat (or an exception that Eclipse might catch) that would confirm that this is the source of the error.
So here's my question - what would y'all recommend someone try in order to figure out what the actual problem is?

Step #1: See if the built in Maps application works. If it does not, you have problems with the device.
Step #2: Triple-check that you have the INTERNET permission correctly defined.
Step #3: Triple-check that you have a proper API key.
Step #4: Return to Step #1. :-)
I have many sample Maps applications scattered throughout my books -- here is the simplest one.

Related

Android Things RC522 (Galarzaa90 library)

I can't seem to get Galarzaa's library to work.
Neither his example nor the code under "usage" on the front page compiles.
The following line (and every consecutive call on rc522 from the "usage" section) causes a problem:
boolean result = rc522.authenticateCard(Rc522.AUTH_A, block, key);
Does any one know a tutorial or any helpfull link?
Also, do I have to configure the GPIO Pins of my build when I create it from the Android Things console under Step 5 Edit hardware configurations? If so, where do I find all the neccessary information? Or can I completly ignore that part, as long as my RC522 reader is properly connected to the RPi
I did got it to work following the example. I don't recall anything wrong with the documentation, but I'll double check.
I think you are trying a very complicated method for deploying. You are supposed to use the console and the custom images when you are done developing and want to do distribution. While in development, you should use a default image and Deploy the apk using adb.

android GPS location doesn't work?

I'm new to android development and I tried 2 tutorials to get the current location but neither of them work for me. I get the exact expected layout but instead of showing the location, it appears to be totally blank as if the command that sets the text field doesn't exist. The logcat doesn't show any exception that's why I didn't post it. Everything else looks normal.
I thought it might be something related to the permissions that must be ran in realtime starting from android 6.0 but this tutorial that I've tried deals with that issue, besides doesn't the lack of permissions throw a security exception ?
Here are the two tutorials that I've followed exactly as they are:
http://demonuts.com/2016/12/30/get-current-location-android-studio/
http://www.viralandroid.com/2015/12/how-to-get-current-gps-location-programmatically-in-android.html
For maps to working you need to put google_maps_key into google_maps_api.xml which is under values folder. You get this key in google api manager.

How do you debug successfully in Android?

I understand there is the LogCat view to check the messages logged but I can't make sense of it.
When debugging (I use Java primarily) I've been accustomed to stepping over each line of code and finding out the exact point where the program crashes and then doing something about it.
How can I do this with Android development? Is there a way to precisely locate the line which is causing the application to crash?
I can't understand what to make of/how to read the LogCat messages and when I try to step over (using the F9 key or the 'Debug' option in Eclipse) it keeps opening new tabs for inbuilt classfiles (like Instrumentation.class etc) and after pressing F6 a few times over again the app crashes showing 'The application has stopped unexpectedly. Please try again'
Can someone tell me if there's something to be done in a way that I'm not doing here?
Thanks!
Btw if it helps, here's the generated log:
http://pastebin.com/EaqaWUdS
You are using a resource id that doesn't exist at line : 93 of com.site.custom.ModAdapter.getView(CustomListProjectActivity.java
--EDIT : add explanations
You will read a logcat stack trace in the same way as you did in Java : read bottom up and the culprit is the last line of your classes (before the code gets into the android sdk code).
You can do it the other way around, and start from top, stopping at the first class of yours and discarding android classes.
The same reasoning applies when debugging : step into your methods if needed and step over all methods of the SDK unless you want to debug them (and usually you don't, if you really suspect a bug inside the SDK, check the source at grepcode to see the inner mechanics of the android sdk class you are interested in).
Sometimes it gets difficult to track bugs on android, especially for widget layout related bugs because you can only see the code that is executed by the android platform, no code of your is executed, only your data are read from an xml file for instance. If something breaks here, it can be harder to debug. In that case, apply the dichotomy method : remove half line, if the bug doesn't show up, then readd your lines, remove half of them, etc...
It is the same like in java. Basically you need the sources to open the java files instead the class files. Google shows you how to add the sources.
Basically you debug android while staying in your own classes. I barely look into the android classes as the most issues are, of course, located in my own classes.
So just debug like you already do but don't step into methods/classes you don't own unless you have the sources added to your sdk. Even if you have, there might be some classes that aren't open source, so you can't step into the sources there. (Basically all Google API classes)

Spoofing Location

I've got an application in the browser that's customized to use Android's browser geolocation APIs. I'd like to find a way to fake the lat/lng that's sent to the browser so I can type in arbitrary coordinates.
In doing some research I came across DDMS - http://developer.android.com/guide/developing/tools/ddms.html - which seems to do what I want, but seems to require the IDE or an emulator. I don't want to use an emulator because I want to test on the device and I don't have the IDE set up for Android.
Does anyone know if there's a way to send mock location data to an Android device without loading up the IDE (or doing it through the emulator)?
I do not believe this is possible -- sorry!
Also the DDMS and IDE solutions are one and the same and only work with the emulator.
Just in case someone stumbles across this question like I did, here is some info about how to mock the LocationProvider on a physical device. Marking this as community wiki because I didn't come up with the original answer. Code is listed in diffract.me/2009/11/android-location-provider-mock (looks like domain is expired as of 9/29/2010, I used Google's cache of the page) & from stackoverflow.com/.../android-mock-location-on-device.

Android "Hello, MapView" Tutorial - Map Tiles Do Not Load

I am new to Android software development and new to this site. I am hoping someone might have some experience with the problem I am having.
I've been following the Hello, MapView tutorial in order to not only learn the Android framework, but also the Google Maps library. I've tried my best to implement things exactly as the tutorial has instructed. My problem is that the application does load in my emulator (or even on my phone for that matter), but the map tiles do not load.
Searching Google I found a post by someone else on another site having the same issue, but his/her problem was that the important elements added to the AndroidManifest.xml file were not in the right order. I double-checked this in mine, but everything seems to be right.
So, I am not sure what the issue is and was hoping others have seen this before. I can provide any snippets of code, if that would help.
Thank you.
Non-loading tiles are usually the result of not having the API key set up correctly. Obtaining a Maps API key
To answer the response you left to d.: If you want to have it "just work" when you run from Eclipse you'll need to get an API key for your debug certificate. There's instructions on the same page as before. Do note that you'll have to swap back to your other key before publishing though.
I am guessing the issue is not that you have an incorrect map key, but that you do not have the proper keystore setup. The application needs to be signed by the same keystore you used to generate the map key. You've noted that you can get it to work when you sign the application yourself, but you need to setup a debug keystore in order to use the Maps API with regular Eclipse builds.
All Eclipse builds require a debug keystore; you just normally don't notice it because ADT generates one for you automatically. You should either follow the directions here and create your own debug keystore, or you should take the debug key that ADT automatically created for you (it'll show you where it created it in Windows > Preferences > Android > Build) and sign up for another Maps API key. That key will work with Eclipse.
(P.S., this does make it a hassle to compile for release, as you need to switch your key back and forth depending on the signing keystore.)
I had the issue of tiles not loading as well. As you mentioned your original post, one possibility is with the ordering of elements in the AndroidManifest.xml file. Specifically, I originally had the line:
<uses-permission android:name="android.permission.INTERNET" />
after the application element. Once I moved this line before the application element, my map tiles started loading again.
The tiles not loading is almost always a result of using an inaccurate API-key, i think. Have you checked yours?
Details: Obtaining a Maps API key
I had the same problem... my error was in the manifest file puting INTERNET permissions inside application. After moveing it out (upside) everying was working good.
Make sure you have 3g on the top panel. If you don't then there is no internet connection. Sometimes I have to turn the emulator on and off a couple of times to get 3g to come up.
d. is probably correct. However, Internet problems will also cause similar symptoms. Be sure that your INTERNET permission is properly positioned and that there are no proxy servers/firewalls impeding access to the Internet.
Another problem could be a proxy that you are behind. The proxy slows things down a lot and it will effect your app even though the maps app and internet browser in the emulator work fine.
This is old question, but here is one more answer: if you are as hasty as me, you might accidentally copy the finger print code instead of API key from the web page :)
The Hello, MapView tutorial your were talking about is no longer valid. New V1 map applications can no longer be done.
Follow https://developers.google.com/maps/documentation/android/ for Google Maps Android API v2 applications.

Categories

Resources