現在周囲のAPをスキャンしてデータベースに値を格納しようとしているのですがContentValuesへの値の設定の仕方がわかりません。このプログラムの場合にはどのように値を格納するように改変したらよいでしょうか? どうかよろしくお願いします。
lang
1public class MainActivity extends AppCompatActivity { 2 /** Called when the activity is first created. */ 3 private static MySQLiteHelper helper; 4 private SQLiteDatabase db; 5 private Context context; 6 private ListView listView; 7 private String ssid; 8 private int date ; 9 private int level; 10 private int freq; 11 12 @Override 13 public void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 17 helper = new MySQLiteHelper(this); 18 db = helper.getWritableDatabase(); 19 20 ContentValues values = new ContentValues(); 21 values.put(helper.COLUM_SSID,ssid); 22 values.put(helper.COLUM_FREQ,freq); 23 values.put(helper.COLUM_LEVEL,level); 24 values.put(helper.COLUM_DATE,date); //時刻を入れたい ButtonContent.time(); 25 db.insert(helper.TABLE_NAME,null,values); 26 27 28 listView = (ListView)findViewById(R.id.listView); //Listviewにリンク 29 30 final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); 31 listView.setAdapter(adapter); //ListViewに渡す 32 final WifiManager manager = (WifiManager) getSystemService(WIFI_SERVICE); 33 34 /* メインスレッド以外から UI を触るための 仲介役 */ 35 final Handler handler = new Handler(); 36 37 /* 一定時間ごとに 実行してほしいことを run() の中に書く */ 38 final TimerTask timerTask = new TimerTask(){ 39 @Override 40 public void run() { 41 if (manager.getWifiState() == WifiManager.WIFI_STATE_ENABLED) { 42 // APをスキャン 43 manager.startScan(); 44 // スキャン結果を取得 45 List<ScanResult> apList = manager.getScanResults(); 46 final String[] aps = new String[apList.size()]; 47 for (int i = 0; i < apList.size(); i++) { 48 aps[i] ="SSID" + apList.get(i).SSID + "\n" + apList.get(i).frequency + "MHz" 49 + apList.get(i).level + "dBm" + ButtonContent.time(); 50 } 51 52 /* スキャンが終わったら表示する */ 53 /* TimerTask は メインスレッドで実行できないので、UIを触りたいのでHandlerを使う */ 54 handler.post(new Runnable() { 55 @Override 56 public void run() { 57 /* リストをきれいさっぱり空にして */ 58 adapter.clear(); 59 /* 新しい情報を全部足して */ 60 adapter.addAll(aps); 61 /* 中身変わったと教える */ 62 adapter.notifyDataSetChanged(); 63 } 64 }); 65 } 66 } 67 }; 68 /* TimerTaskは UI スレッドで実行できないので 別なスレッドの中で実行する */ 69 new Thread(new Runnable() { 70 @Override 71 public void run() { 72 new Timer(true).schedule(timerTask, 0, 500); 73 } 74 }).start(); 75 } 76 77 78 @Override 79 public void onDestroy(){ 80 super.onDestroy(); 81 db.close(); 82 } 83 84 85 @Override 86 public boolean onCreateOptionsMenu(Menu menu) { 87 // Inflate the menu; this adds items to the action bar if it is present. 88 getMenuInflater().inflate(R.menu.menu_main, menu); 89 return true; 90 } 91 92 @Override 93 public boolean onOptionsItemSelected(MenuItem item) { 94 // Handle action bar item clicks here. The action bar will 95 // automatically handle clicks on the Home/Up button, so long 96 // as you specify a parent activity in AndroidManifest.xml. 97 int id = item.getItemId(); 98 99 //noinspection SimplifiableIfStatement 100 if (id == R.id.action_settings) { 101 return true; 102 } 103 104 return super.onOptionsItemSelected(item); 105 } 106 107 108} 109
SQLiteOpenHelperクラスです。↓
lang
1public class MySQLiteHelper extends SQLiteOpenHelper implements BaseColumns { 2 3 private static final int DATABASE_VIRSION = 1; 4 private static final String DATABASE_NAME = "sqlite_wifi.db"; 5 6 //テーブル名やカラムはデータベースのアクセスに必要なのでpublic 7 public static final String TABLE_NAME = "mytable"; 8 public static final String COLUM_ID = "_id"; 9 public static final String COLUM_SSID = "ssid"; 10 public static final String COLUM_FREQ = "freq"; //カラムの割り振り、ID カラムIDには_idを使うことが必須事項 11 public static final String COLUM_LEVEL = "level"; 12 public static final String COLUM_DATE = "date" ; 13 14 private static final String MY_CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + COLUM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + 15 COLUM_SSID + " TEXT NOT NULL," + COLUM_FREQ + " INTEGER NOT NULL," + COLUM_LEVEL + " INTEGER NOT NULL," + COLUM_DATE + "INTEGER NOT NULL );"; //クエリ分の作成処理 16 17 private static final String DROP_TABLE = "drop table " + TABLE_NAME; //tableの削除 18 19 public MySQLiteHelper(Context context) { 20 super(context, DATABASE_NAME, null, DATABASE_VIRSION); 21 } 22 23 @Override 24 public void onCreate(SQLiteDatabase db) { 25 26 db.execSQL(MY_CREATE_TABLE); //tableを作成するSQLを実行 27 } 28 29 @Override 30 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 31 db.execSQL(DROP_TABLE); 32 onCreate(db); //tableを削除して再生成 33 } 34} 35
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/28 18:03
退会済みユーザー
2015/10/28 18:05
退会済みユーザー
2015/10/28 18:14 編集
2015/10/28 18:36
退会済みユーザー
2015/10/28 18:41
2015/10/28 18:59
退会済みユーザー
2015/10/28 19:04
2015/10/28 19:24
退会済みユーザー
2015/10/28 19:33
2015/10/28 19:55
退会済みユーザー
2015/10/28 20:27 編集
2015/10/28 20:22
退会済みユーザー
2015/10/28 20:26
2015/10/28 20:39
退会済みユーザー
2015/10/28 20:45
2015/10/28 21:17
退会済みユーザー
2015/10/28 21:28
2015/10/29 06:21
退会済みユーザー
2015/10/29 07:17
2015/10/29 08:45
退会済みユーザー
2015/10/29 08:47 編集
2015/11/05 15:21
退会済みユーザー
2015/11/05 19:01 編集
2015/11/05 19:40
退会済みユーザー
2015/11/05 19:47
2015/11/05 20:34
退会済みユーザー
2015/11/06 08:32