###前提・実現したいこと
GPSの情報がデータベースのテーブルに入りません。
MainActivity.javaのMySQLiteHelper.writeGPS(MainActivity.this, out);から、MySQLiteHelpe.javaに送っています。
送り方、受け取り方、格納の仕方が間違っているのでしょうか?
どうすれば入るのか教えてください。
###該当のソースコード
MainActivity.java public class MainActivity extends AppCompatActivity { private LocationManager mLocationManager = null; private LocationListener mLocationListener = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); final boolean gpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!gpsEnabled) { // ToDo: GPS 有効 } mLocationListener = new LocationListener() { // http://developer.android.com/reference/android/location/Location.html public void onLocationChanged(Location location) { String[] out = new String[]{String.valueOf(location.getLatitude()), String.valueOf(location.getLongitude()), String.valueOf(location.getAltitude()), String.valueOf(location.getAccuracy()), String.valueOf(location.getSpeed()), String.valueOf(location.getBearing())}; MySQLiteHelper.writeGPS(MainActivity.this, out); String out1 = "\n" + "\n" + "---------- Location --------\n" + "緯度(Latitude)\n\t" + String.valueOf(location.getLatitude()) + " 度\n" + "経度(Longitude)\n\t" + String.valueOf(location.getLongitude()) + " 度\n" + "高度(Altitude)\n\t" + String.valueOf(location.getAltitude()) + " m\n" + "精度(Accuracy)\n\t" + String.valueOf(location.getAccuracy()) + " m\n" + "速度(Speed)\n\t" + String.valueOf(location.getSpeed()) + " m/s\n" + "方角(Bearing)\n\t" + String.valueOf(location.getBearing()) + " 度\n" + // "時刻(Time)\n\t" + String.valueOf(location.getTime()) + " ミリ秒\n" + "\n"; TextView t = (TextView) findViewById(R.id.textView1); t.setText(out1); } //位置情報状態変更を通知する時に呼ばれる public void onStatusChanged(String provider, int status, Bundle extras) { } //位置情報取得有効化を通知する時に呼ばれる public void onProviderEnabled(String provider) { } //位置情報取得無効化を通知する時に呼ばれる public void onProviderDisabled(String provider) { } }; } //開始時に呼ばれる。 protected void onStart() { super.onStart(); mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 1/*mSec*/, 1/*meter*/, mLocationListener); } //一時停止時に呼ばれる。 protected void onStop() { super.onStop(); mLocationManager.removeUpdates(mLocationListener); super.onPause(); } }
MySQLiteHelper.java class MySQLiteHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 2; private static final String DATABASE_NAME = "test.db"; public static final String TABLE_NAME2 = "mytable2";//GPSのためのtable public static final String COLUMN_ID = "_id"; public static final String COLUMN_DATE = "date"; public static final String COLUMN_LATITUDE = "latitude"; public static final String COLUMN_LONGITUDE = "longitude"; public static final String COLUMN_ALTITUDE = "altitude"; public static final String COLUMN_ACCURACY = "accuracy"; public static final String COLUMN_SPEED = "speed"; public static final String COLUMN_BEARING = "bearing"; private static final String MY_CREATE_TABLE2 = "CREATE TABLE " + TABLE_NAME2 + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_LATITUDE + "TEXT NOT NULL," + COLUMN_LONGITUDE + " TEXT NOT NULL," + COLUMN_ALTITUDE + "TEXT NOT NULL," + COLUMN_ACCURACY + "TEXT NOT NULL," + COLUMN_SPEED + "TEXT NOT NULL," + COLUMN_BEARING + "TEXT NOT NULL," + COLUMN_DATE + " DEFAULT CURRENT_TIMESTAMP );"; private static final String DROP_TABLE2 = "drop table2 " + TABLE_NAME2; public MySQLiteHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(MY_CREATE_TABLE2); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(DROP_TABLE2); onCreate(db); //tableを削除して再生成 } public static void writeGPS(Context context, String[] out) { SQLiteDatabase db = new MySQLiteHelper(context).getWritableDatabase(); try { ContentValues values = new ContentValues(); values.put(COLUMN_LATITUDE, out[0]); values.put(COLUMN_LONGITUDE, out[1]); values.put(COLUMN_ALTITUDE, out[2]); values.put(COLUMN_ACCURACY, out[3]); values.put(COLUMN_SPEED, out[4]); values.put(COLUMN_BEARING, out[5]); db.insert(TABLE_NAME2, null, values); } finally { db.close(); } } }
###補足情報(言語/FW/ツール等のバージョンなど)
AndoroidStudioで開発しています。
回答1件
あなたの回答
tips
プレビュー