0

I'm new in android app - I like to know, if we have to create one app for example: identifier the stars using GPS and camera API.

How and where we can store all the database? As I think if we store them on the phone it would be too small, sorry this might sound silly but I am new about building a mobile development.

Any ideas? And in term of Camera API - where can I find this info so that if I point my camera to a particular star up the sky e.g star x is called y for example. I know we have to use GPS co-ordinate and camera API? to determine these so we can get the accurate info.

Can anyone assist me on these, or perhaps where I can get information about these?

Many thanks, theBorneo

theBorneo
  • 21
  • 4
  • You will need to use GPS and the in built digital compass + accelerometer. – Ranhiru Jude Cooray Nov 26 '11 at 03:51
  • Thanks for the info - but the problem is - How can I create for example a GPS that give me let's say a little button that when I click on that button the GPS will located my current place / area? How can I do that in android? Can you give me any example please? – theBorneo Nov 27 '11 at 22:44

2 Answers2

2

There is a very nice guide on Data Storage. I think that you can find the answer you are looking for.

iCantSeeSharp
  • 3,880
  • 4
  • 42
  • 65
0

Answering the first part of your question, in Android, we generally use SQLite, and there are TONS of examples all over the internet, such as this one. I don't particularly like the majority of the examples online, but the basics of one is basically:

   public class DataBaseHelper extends SQLiteOpenHelper {

    private static String DB_PATH = "/data/data/com.your.application/databases/";

    private static String DB_NAME = "android.db";

    private SQLiteDatabase myDataBase;

    private final Context myContext;

    /**
     * Constructor Takes and keeps a reference of the passed context in order to
     * access to the application assets and resources.
     * 
     * @param context
     */
    public DataBaseHelper(Context context) {

        super(context, DB_NAME, null, 1);
        this.myContext = context;
    }

    /**
     * Creates a empty database on the system and rewrites it with your own
     * database.
     */
    public void createDataBase() throws IOException {

        boolean dbExist = checkDataBase();

        if (dbExist) {
            // do nothing - database already exist
            Log.v("Database","Database Exists");
        } else {
            Log.v("Database","Data base needs creating");
            // By calling this method and empty database will be created into
            // the default system path
            // of your application so we are gonna be able to overwrite that
            // database with our database.
            this.getReadableDatabase();

            try {

                Log.v("Database","CopyDataBase");
                copyDataBase();

            } catch (IOException e) {

                throw new Error("Error Copying Database");

            }
        }

    }

    /**
     * Check if the database already exist to avoid re-copying the file each
     * time you open the application.
     * 
     * @return true if it exists, false if it doesn't
     */
    private boolean checkDataBase() {

        SQLiteDatabase checkDB = null;

        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null,
                    SQLiteDatabase.OPEN_READWRITE);

        } catch (SQLiteException e) {

            // database does't exist yet.

        }

        if (checkDB != null) {

            checkDB.close();

        }

        return checkDB != null ? true : false;
    }

    /**
     * Copies your database from your local assets-folder to the just created
     * empty database in the system folder, from where it can be accessed and
     * handled. This is done by transfering bytestream.
     */
    private void copyDataBase() throws IOException {

        // Open your local db as the input stream
        InputStream myInput = myContext.getAssets().open(DB_NAME);

        // Path to the just created empty db
        String outFileName = DB_PATH + DB_NAME;

        // Open the empty db as the output stream
        OutputStream myOutput = new FileOutputStream(outFileName);

        // transfer bytes from the inputfile to the outputfile
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }

        // Close the streams
        myOutput.flush();
        myOutput.close();
        myInput.close();

        Log.v("Log","Database copied sucsessfully");
    }

    public void openDataBase() throws SQLException {

        // Open the database
        String myPath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null,SQLiteDatabase.OPEN_READWRITE);

        Log.v("Logger","Database Opened");

    }

    @Override
    public synchronized void close() {

        if (myDataBase != null)
            myDataBase.close();

        super.close();

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public Cursor get() {
        return myDataBase.query("AwayMessages", null, null, null, null, null,null);
    }

    public SQLiteDatabase returnDatabase() {
        return myDataBase;
    }

}

With the assumption that the SQLite Database will be prepared ahead of time, before application launch, and saved in the assets folder

As for GPS, try here

Then, to launch the camera and get the picture back into your application, check out this question

Community
  • 1
  • 1
Samuel
  • 4,337
  • 3
  • 29
  • 35
  • Thanks all for the ideas - Can anyone please tell me what sort of technologies does it needed? If for example on this matter let's say I want to develop an mobile app which identifies stars, apart from SQLite as a database storage, and learning the GPS API and Camera API (Perhaps), Java as to implement the program and - what other technologies or skills I need to know? Can anyone give me some ideas please - what to start? – theBorneo Nov 27 '11 at 20:28
  • the only other thing I can really think would be you may want to figure out how you're going to identify the constellations, presumably by image comparison. – Samuel Nov 27 '11 at 22:21
  • Thanks Samuel, but how can I make the database connected with android? I know that I have to create a table for the database but I do not know how this all start. Can you please assist me? – theBorneo Dec 01 '11 at 17:32
  • Do I have to install SQLite? or other software e.g tomcat? server or whatever needed for the connection? – theBorneo Dec 01 '11 at 17:33
  • Do I have to install the SQLite to start with? – theBorneo Dec 01 '11 at 18:25
  • no, sqlite is part of the Android operating system, look up more examples on how to use it, it's already there, there are many ways to use sqlite on your computer too, such as sql database browser's; I dont know much more else to help you in this specific example – Samuel Dec 01 '11 at 19:54