· 7 years ago · Feb 26, 2019, 10:26 AM
1public Camera.PictureCallback jpegHandler = new Camera.PictureCallback(){
2
3 public void onPictureTaken(byte[] jpeg, Camera camera ){
4 // TODO Work on the image insertion into the database
5
6 try {
7 ByteArrayOutputStream bos = new ByteArrayOutputStream();
8 image = BitmapFactory.decodeByteArray(jpeg, 0, jpeg.length);
9 image.compress(Bitmap.CompressFormat.PNG, 100, bos);
10 byte[] imageBlob = bos.toByteArray();
11
12 UpdateGeoLocation updateGeo = new UpdateGeoLocation(getApplicationContext());
13
14 double picLat = updateGeo.returnlocation.getLatitude();
15 double picLng = updateGeo.returnlocation.getLongitude();
16
17 Log.i("imageBlob", "" + imageBlob);
18 Log.i("phoLat", "" + picLat);
19 Log.i("phoLng", "" + picLng);
20
21 dbControl.open();
22 dbControl.addItem(imageBlob, picLat, picLng);
23 dbControl.close();
24
25 Log.i("InsertPhotoIntoDB", "WORKED!");
26 } catch (SQLiteException e) {
27 Log.e("InsertPhotoIntoDB", "FAILED: " + e.getMessage());
28 }
29
30public class GlobalDBVars {
31 public static final String DATABASE_NAME = "NST.db";
32 public static final int DATABASE_VERSION = 2;
33 public static final String TABLE_NAME = "photos_withCoordinates";
34
35 public static final String KEY_ROWID = "_id";
36 public static final String KEY_PHOTOS = "_photo";
37 public static final String KEY_LAT = "_lat";
38 public static final String KEY_LNG = "_lng";
39}
40
41private static final String DATABASE_CREATE = "CREATE TABLE IF NOT EXISTS " +
42 GlobalDBVars.TABLE_NAME + "(" +
43 GlobalDBVars.KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
44 GlobalDBVars.KEY_PHOTOS + " BLOB NOT NULL, " +
45 GlobalDBVars.KEY_LAT + " REAL NOT NULL, " +
46 GlobalDBVars.KEY_LNG + " REAL NOT NULL);";
47
48@Override
49public void onCreate(SQLiteDatabase db) {
50 try {
51 db.execSQL(DATABASE_CREATE);
52 onCreate(db);
53 Log.i(TAG, "onCreate db: " + DATABASE_CREATE);
54 } catch (SQLException e) {
55 Log.e(TAG, "FAILED: " + e.getMessage());
56 }
57}
58
59public long addItem(byte[] photos, double _lat, double _lng) {
60 ContentValues setUpVals = createContentValues(photos, _lat, _lng);
61
62 return database.insert(GlobalDBVars.TABLE_NAME, null, setUpVals);
63}
64
6509-04 10:08:48.160: I/imageBlob(21529): [B@40751c18
6609-04 10:08:48.160: I/phoLat(21529): 37.3674153
6709-04 10:08:48.160: I/phoLng(21529): -77.4001403
6809-04 10:08:48.240: I/dalvikvm(21529): threadid=1: stack overflow on call to Ljava/util/Locale;.getLanguage:L
6909-04 10:08:48.240: I/dalvikvm(21529): method requires 8+20+0=28 bytes, fp is 0x58f53318 (24 left)
7009-04 10:08:48.240: I/dalvikvm(21529): expanding stack end (0x58f53300 to 0x58f53000)
7109-04 10:08:48.240: I/dalvikvm(21529): Shrank stack (to 0x58f53300, curFrame is 0x58f56d8c)
7209-04 10:08:48.240: D/AndroidRuntime(21529): Shutting down VM
7309-04 10:08:48.240: W/dalvikvm(21529): threadid=1: thread exiting with uncaught exception (group=0x40105760)
7409-04 10:08:48.270: D/dalvikvm(21529): GC_CONCURRENT freed 95K, 8% free 8606K/9287K, paused 2ms+2ms
7509-04 10:08:48.310: E/AndroidRuntime(21529): FATAL EXCEPTION: main
7609-04 10:08:48.310: E/AndroidRuntime(21529): java.lang.StackOverflowError
7709-04 10:08:48.310: E/AndroidRuntime(21529): at java.lang.CaseMapper.toUpperCase(CaseMapper.java:143)
7809-04 10:08:48.310: E/AndroidRuntime(21529): at java.lang.String.toUpperCase(String.java:1619)
7909-04 10:08:48.310: E/AndroidRuntime(21529): at android.database.DatabaseUtils.getSqlStatementType(DatabaseUtils.java:1245)
8009-04 10:08:48.310: E/AndroidRuntime(21529): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:100)
8109-04 10:08:48.310: E/AndroidRuntime(21529): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:59)
8209-04 10:08:48.310: E/AndroidRuntime(21529): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1931)
8309-04 10:08:48.310: E/AndroidRuntime(21529): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1864)
8409-04 10:08:48.310: E/AndroidRuntime(21529): at sompackage.nst.DatabaseHelper.onCreate(DatabaseHelper.java:49)
85
86@Override
87public void onCreate(SQLiteDatabase db) {
88 try {
89 db.execSQL(DATABASE_CREATE);
90 **onCreate(db);**
91...
92}