Jump to content


Check out our Community Blogs

Register and join over 40,000 other developers!


Recent Status Updates

View All Updates

Photo
* * * * * 2 votes

Using Google API on Eclipse Android SDK!

google maps android eclipse sdk app error solution development api

This topic has been archived. This means that you cannot reply to this topic.
8 replies to this topic

#1 Donovan

Donovan

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 633 posts

Posted 16 April 2014 - 04:30 AM

Hello CodeCall, I have recently decided to get back into my old programming habits by developing a fairly simple application in XML/Java. I will be making this application for the target OS: Android 4.1.0 Jelly Bean and I am in need of much support from the community!  I will post everything I do to ensure whoever decides to help me on this quest will at least have the comfort of knowing all the information instead of bits and pieces or scattered poster jumble. I am very new to mobile development but, I am learning quite quickly! Do not be afraid to communicate and help me, I am pretty intellectual and well-spoken!

 

While reading through the Google API documentation, it seems that I am having much trouble getting my eclipse to build my application project smoothly without errors! So, I am going to layout what I have completed step-by-step in a simple diagram. Then, you professionals out there will hopefully see my post and help out a senior member! In all of my 6 years on this board, I always continue to come back to this one place! I love it here  :)

 

UPDATE: I recently just added Google Repository to the SDK list. So, I do have Google Repository installed, even though in the image titled "Android SDK Manager" below says otherwise! Although, I do not fully understand how much of that matters. I do know some of the settings I will be showing probably apply to the emulator and have nothing to do with my end-goal.

Here are my goals for the project that I will be learning from.

 

1. GOALS

  • Properly integrate and display Google Maps onto Android 4.1 Mobile Device.
  • Integrate onSwipe or Drawer navigational features on google maps layout.
  • Obtain and use Proper API Keys, Google Play Service, Etc.
  • Build the target application for the most-used Android version according to the market. (Which I am assuming is 4.1x Jelly Bean)

2. Things I Have Done

  1. Overview - Check.
  2. Install the Android SDK - Check
  3. Install and configure the Google Play services SDK - Check
  4. Add the Google Play services version to your app's manifest - Check
  5. Get an Android certificate and the Google Maps API key - Check
  6. Display your app's certificate information - Check
  7. Create an API project in the Google APIs Console - Check
  8. Obtain a Google Maps API key - Check
  9. Add the API key to your application - Check
  10. Specify app settings in the application manifest - Check
  11. Specify permissions - Check
  12. Specify requirement for OpenGL ES version 2 - Check
  13. Add a map - Check

 

Android SDK Manager

8aLdF.png
 

 

 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="localsales.app"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="16" />
    
    <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
		<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
		<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
		
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
		
		<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
		<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="localsales.app.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />
        
        <meta-data
    android:name="com.google.android.maps.v2.AIzaSyD8kgNIYrysS3irLN7nVB8Vv6dD7laqbEA"
    android:value="AIzaSyD8kgNIYrysS3irLN7nVB8Vv6dD7laqbEA"/>
        
        
	
    </application>
	
</manifest>

Activity_Main.xml

<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="localsales.app.MainActivity" >

    <!--
         As the main content view, the view below consumes the entire
         space available using match_parent in both dimensions.
    -->

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.MapFragment"/>

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!--
         android:layout_gravity="start" tells DrawerLayout to treat
         this as a sliding drawer on the left side for left-to-right
         languages and on the right side for right-to-left languages.
         If you're not building against API 17 or higher, use
         android:layout_gravity="left" instead.
    -->
    <!--
         The drawer is given a fixed width in dp and extends the full height of
         the container.
    -->

    <fragment
        android:id="@+id/navigation_drawer"
        android:name="localsales.app.NavigationDrawerFragment"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start" />

</android.support.v4.widget.DrawerLayout>

MainActivity.java

package localsales.app;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.widget.DrawerLayout;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class MainActivity extends Activity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {

    /**
     * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
     */
    private NavigationDrawerFragment mNavigationDrawerFragment;

    /**
     * Used to store the last screen title. For use in {@link #restoreActionBar()}.
     */
    private CharSequence mTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();

        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
    }

    @Override
    public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
                .commit();
    }

    public void onSectionAttached(int number) {
        switch (number) {
            case 1:
                mTitle = getString(R.string.title_section1);
                break;
            case 2:
                mTitle = getString(R.string.title_section2);
                break;
            case 3:
                mTitle = getString(R.string.title_section3);
                break;
        }
    }

    public void restoreActionBar() {
        ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(mTitle);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        if (!mNavigationDrawerFragment.isDrawerOpen()) {
            // Only show items in the action bar relevant to this screen
            // if the drawer is not showing. Otherwise, let the drawer
            // decide what to show in the action bar.
            getMenuInflater().inflate(R.menu.main, menu);
            restoreActionBar();
            return true;
        }
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */
        private static final String ARG_SECTION_NUMBER = "section_number";

        /**
         * Returns a new instance of this fragment for the given section
         * number.
         */
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            TextView textView = (TextView) rootView.findViewById(R.id.section_label);
            textView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
            return rootView;
        }

        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            ((MainActivity) activity).onSectionAttached(
                    getArguments().getInt(ARG_SECTION_NUMBER));
        }
    }

}

I definitely did something wrong, because I am not getting the result I need! If you need more information, let me know and I will provide it. As of now, I will just continue updating this with every piece of information I can think of providing that may be useful to the helper. Also, +REP to anybody willing to provide clues / code-snippets that make Google Maps display on a 4.3 Android OS Device with the navigational-drawer.


Edited by Donovan, 16 April 2014 - 01:38 PM.


#2 Norm

Norm

    CC Addict

  • Senior Member
  • PipPipPipPipPip
  • 397 posts

Posted 16 April 2014 - 01:02 PM

A nice progress report.  I started learning Android several months ago and worked on a Google MAP app for working with waypoints and routes.  After getting it working I haven't gotten any new ideas for the next Android app.

 

I'll be curious to see what you come up with.

 

Norm


Edited by Norm, 16 April 2014 - 01:03 PM.


#3 Donovan

Donovan

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 633 posts

Posted 16 April 2014 - 01:30 PM

A nice progress report.  I started learning Android several months ago and worked on a Google MAP app for working with waypoints and routes.  After getting it working I haven't gotten any new ideas for the next Android app.

 

I'll be curious to see what you come up with.

 

Norm

 

 

Would you be willing to provide your source, as it will greatly improve my ability to increase the effective and efficiency of the app I am working on creating. If you do not have the source anymore that is fine, if you can check back on this progress report and find out why I am having some of the issues I am, that would be awesome!

So far, I am having no build errors, just basic warnings that are not a problem. But, still either the application says, "Unfortunately, AppName was unable to launch." So, I am doing something wrong! haha.

Thanks,
Donovan



#4 Norm

Norm

    CC Addict

  • Senior Member
  • PipPipPipPipPip
  • 397 posts

Posted 16 April 2014 - 01:43 PM

Here's a version of the app.  I'm not on my development machine so it could be an older version.

I had written a waypoints program in java many years ago and have many files of waypoints (ext=.wps) for that program.  I've also gathered waypoint reading code from other sources so I can view their waypoints in my program.  Most of the waypoint file reading logic is in the com.normsstuff.waypoints classes..

 

Let me know if there are problems.

 

Norm

 

 

Whoops, There was some personal stuff in that code. If anyone is really interested I'll post an editted version.


Edited by Norm, 16 April 2014 - 02:04 PM.


#5 Donovan

Donovan

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 633 posts

Posted 16 April 2014 - 02:11 PM

Thank you again, it is working just fine. I will use this as a references. Also, do not worry, any personal information will be discarded and unused. +Reputation for your help!

Thanks,
Donovan



#6 Donovan

Donovan

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 633 posts

Posted 18 April 2014 - 10:53 AM

Well, I had things working just fine, but now I have some errors. I was using Norms reference files for creating Google Maps with the Navigational-Drawer but his code is a few years old I believe and I was having trouble learning how to swap things correctly. When it comes to using the Google Maps with Navigational-Drawer I get many issues.. I am trying to build the project for the target Android market of 4.2 Jelly Bean. That is what most of my App users will be using. Everything else in this project we pretty much have completed.. Our stored locations, using a Get Request to send and receive html data to and from our web server so that the App is plugged into the website, design and layout, all we need is to get Google Maps working with Navigational drawer. If anyone can make a video, send over some source files, etc to show me what I am doing wrong that would be splendid!

 

EDIT / UPDATE: Okay, I have done some more researching and found another documented tutorial for this specific area of the project.

 

http://www.vogella.c...ps/article.html

 

I am going to try it and  I will post my  results.


Edited by Donovan, 18 April 2014 - 11:35 AM.


#7 Norm

Norm

    CC Addict

  • Senior Member
  • PipPipPipPipPip
  • 397 posts

Posted 01 May 2014 - 10:11 AM

Have you resolved using the Google Maps with Navigational-Drawer ?



#8 Donovan

Donovan

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 633 posts

Posted 28 May 2014 - 07:01 PM

I have not. I am currently working on a different project. However, I still am open to work on this more. Do you have a way we can talk on skype? If you can arrange a time to discuss this project so I can take notes that would be great. I will of course update this forum post for other users so that information progresses in the community. If you wish to continue this straight over the forum, that is fine as well. We can just keep coming back and forth whenever :)

Thanks,
Donovan



#9 farrell2k

farrell2k

    CC Addict

  • Advanced Member
  • PipPipPipPipPip
  • 169 posts

Posted 01 June 2014 - 11:25 AM

You still haven't figured this out?  I fell like playing around, so I am just going to do it for you.


Averageloser.com - I used to be a programmer like you, then I took a -> in the knee. 





Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download