Код класса Database Helper:
import android. database. DatabaseErrorHandler;
import android. database. sqlite. SQLiteDatabase;
import android. database. sqlite. SQLiteOpenHelper;
import android. provider. BaseColumns;
import android. util. Log;// Эти строки нужны для работы с базой данных
class DatabaseHelperextendsSQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase. db";
private static final intDATABASE_VERSION= 1;
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DatabaseHelper(Context context, String name, SQLiteDatabase. CursorFactory factory,
intversion) {
super(context, name, factory, version);
}
public DatabaseHelper(Context context, String name, SQLiteDatabase. CursorFactory factory,
intversion, DatabaseErrorHandlererrorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabasedb) {
}
@Override
public void onUpgrade(SQLiteDatabasedb, intoldVersion, intnewVersion) {
}
}
Константа DATABASE_NAME отвечает за имя файла, в котором будет храниться база данных приложения. Можно придумать любое имя и обойтись без расширения.
Вторая константа DATABASE_VERSION отвечает за номер версии базы. Принцип её работы схож с номером версий самого приложения. Когда мы видим, что вышла новая версия Chrome 33, то понимаем, что пора обновляться. Аналогично поступает и само приложение, когда замечает, что номер версии базы стал другим. Как только программа заметила обновление номера базы, она запускает метод onUpgrade(), который сформировался автоматически. В этом методе необходимо разместить код, который должен сработать при обновлении базы.
В методе onCreate()создаётся сама база данных. Когда приложение будет готово, в папке data/data/имя_пакета/databases появится файл mydatabase. db. Этот файл и будет базой данных, в которой будет находиться созданная вами таблица.
Для создания базы данных используется код, добавляемый в главную активность события onbutton1Click:
public void onbutton1Click(View view) {
DatabaseHelper mDatabaseHelper = new DatabaseHelper(this, "mydatabase. db", null, 1);
SQLiteDatabasesdb;
sdb = mDatabaseHelper. getReadableDatabase();
}
Замечание: чем больше база данных, тем труднее приложению в силу ограниченности ресурсов мобильного устройства работать с ней, то есть, чем больше значений мы добавляем, тем медленнее будет выполняться запрос.
Для добавления данных в таблицу используется код, который нужно написать в методе OnCreateосновной активности приложения.
super. onCreate(savedInstanceState);
setContentView(R. layout. activity_main);
mDatabaseHelper = new DatabaseHelper(this, "mydatabase. db", null, 1);
mSqLiteDatabase = mDatabaseHelper. getWritableDatabase();
db = new DatabaseHelper(this);
SQLiteDatabasesqdb = db. getWritableDatabase();
String insertQuery = "INSERT INTO " +
DatabaseHelper. ZN_COLUMN+
" (" + DatabaseHelper. CH_COLUMN+ ") VALUES (+intwfi+)";
sqdb. execSQL(insertQuery);
Чтобы удалить данные из таблицы используется метод delete:
publicintdelete (String table,
String whereClause,
String[] whereArgs)
Для чтения данных:
Cursor cursor = mDatabase. query(mDatabaseHelper. TABLE_NAME, new String[]{
DatabaseHelper. ZN_COLUMN, DatabaseHelper. CH_COLUMN}, null,
);
while (cursor. moveToNext()) {
intid = cursor. getInt(cursor. getColumnIndex(DatabaseHelper. CH_COLUMN));
String name = cursor. getString(cursor
.getColumnIndex(DatabaseHelper. ZN_COLUMN));
Log. i("LOG_TAG", "ROW " + id + " HAS NAME " + name);
}
cursor. close();
}
При работе с базами данных их содержимое выводится на экран в виде объекта cursor, который нельзя путать с курсором компьютерной мыши, так как объекты типа cursor – данные, считываемые из таблицы. Поэтому для работы с данными такого типа нужно открывать cursor командой
Cursor cursor = mDatabase. query(mDatabaseHelper. TABLE_NAME, new String[]
и закрывать его командой cursor. close(); .
Подготовка к основной части работы приложения сделана: создана база данных, интерфейс. Данные можно выводить и считывать.
Для работы с WI-FIпервым делом нужно получить сигнал от системы о том, включен он или выключен. Для этого необходим приемник таких сообщений. В Android есть такой компонент как BroadcastReceiver. Он позволяет слушать внешние события и производить реакцию на них. Данный компонент начинает выполнять действия по получению Intent.
Для получения доступа к сути беспроводной передачи данных нужно прописать разрешения:
<uses-permission android:name="android. permission. ACCESS_NETWORK_STATE" />
<uses-permission android:name="android. permission. ACCESS_WIFI_STATE" />
<uses-permissionandroid:name="android. permission. CHANGE_WIFI_STATE"/>
<uses-feature android:name="android. hardware. wifi" />
Данные разрешения дают приложению доступ к аппаратному обеспечению мобильного устройства для регистрации последующих значений сигнала точки доступа сети беспроводной передачи данных.
Код класса NetworkMonitоr, наследуемый от BroadcastReceiver приведён ниже.
Для работы с менеджерами WI-FI нужно импортировать классы:
importandroid. content. BroadcastReceiver;
import android. content. Intent;
import . ConnectivityManager;
import . NetworkInfo;
import . wifi. WifiInfo;
import . wifi. WifiManager;
import android. os. Bundle;
Код класса NetworkMonitоr:
class NetworkMonitor extends BroadcastReceiver {
private String LOG_TAG = "myNetworkMonitor";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent. getAction();
Log. d(LOG_TAG, action);
ConnectivityManager cm =
(ConnectivityManager)context. getSystemService(Context. CONNECTIVITY_SERVICE);
Network Info active Network = cm. getActiveNetworkInfo();
Boolean is Connected = (activeNetwork!= null) &&
activeNetwork. isConnectedOrConnecting();
Log. d(LOG_TAG,"isConnected: "+isConnected);
if (!isConnected)
return;
booleanisWiFi = activeNetwork. getType() == ConnectivityManager. TYPE_WIFI;
Log. d(LOG_TAG,"isWiFi: "+isWiFi);
if (!isWiFi)
return;
WifiManagerwifiManager = (WifiManager) context. getSystemService(Context. WIFI_SERVICE);
WifiInfoconnectionInfo = wifiManager. getConnectionInfo();
Log. d(LOG_TAG, connectionInfo. getSSID());
}
}
Сначала мы получаем объект класса ConnectivityManager, который следит за состоянием сети, и затем объект класса NetworkInfo для получения описания состояния сети. После этого проверяем: мы подключаемся или отключаемся. Далее в лог идёт запись значений сигнала нашей сети, а также работа в приложении и определение сети.
После написания исходного кода приложение можно запустить с панели инструментов функцией StartApp. Далее открывается окно выбора эмулятора, как показано на рисунке 17.

Рисунок 17-Выбор эмулятора мобильного устройства
Код приложения из файла MainActivity:
package com. example. igor. myapplication;
import android. content. BroadcastReceiver;
import android. content. Intent;
import . ConnectivityManager;
import . NetworkInfo;
import . wifi. WifiInfo;
import . wifi. WifiManager;
import android. os. Bundle;
import pport. design. widget. FloatingActionButton;
import pport. design. widget. Snackbar;
import pport. v7.app. AppCompatActivity;
import pport. v7.widget. Toolbar;
import android. view. View;
import android. view. Menu;
import android. view. MenuItem;
import android. content. Context;
import android. database. DatabaseErrorHandler;
import android. database. sqlite. SQLiteDatabase;
import android. database. sqlite. SQLiteOpenHelper;
import android. provider. BaseColumns;
import android. util. Log;
class DatabaseHelper extends SQLiteOpenHelper implements BaseColumns {
public static final String ZN_COLUMN = "znachenie";
public static final String CH_COLUMN = " db";
private static final String DATABASE_NAME = "mydatabase. db";
private static final int DATABASE_VERSION= 1;
// имятаблицы
private static final String DATABASE_TABLE = "dB";
private static final String DATABASE_CREATE_SCRIPT = "create table "
+ DATABASE_TABLE + " (" + BaseColumns._ID
+ " integer primary key autoincrement, " + ZN_COLUMN
+ " text not null, " + CH_COLUMN + " integer);";
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DatabaseHelper(Context context, String name, SQLiteDatabase. CursorFactory factory,
intversion) {
super(context, name, factory, version);
}
public DatabaseHelper(Context context, String name, SQLiteDatabase. CursorFactory factory,
intversion, DatabaseErrorHandlererrorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabasedb) {
db. execSQL(DATABASE_CREATE_SCRIPT);
}
@Override
public void onUpgrade(SQLiteDatabasedb, intoldVersion, intnewVersion) {
// Запишем в журнал
Log. w("SQLite", "Обновляемсясверсии " + oldVersion + " наверсию " + newVersion);
// Удаляем старую таблицу и создаём новую
db. execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE);
// Создаём новую таблицу
onCreate(db);
}
public intdelete (String table,
String whereClause,
String[] whereArgs)
}
class NetworkMonitor extends BroadcastReceiver {
private String LOG_TAG = "myNetworkMonitor";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent. getAction();
Log. d(LOG_TAG, action);
ConnectivityManager cm =
(ConnectivityManager)context. getSystemService(Context. CONNECTIVITY_SERVICE);
Network Info active Network = cm. getActiveNetworkInfo();
Boolean is Connected = (activeNetwork!= null) &&
activeNetwork. isConnectedOrConnecting();
Log. d(LOG_TAG,"isConnected: "+isConnected);
if (!isConnected)
return;
Boolean is WiFi = activeNetwork. getType() == ConnectivityManager. TYPE_WIFI;
Log. d(LOG_TAG,"isWiFi: "+isWiFi);
if (!isWiFi)
return;
Wifi Manager wifiManager = (WifiManager) context. getSystemService(Context. WIFI_SERVICE);
WifiInfoconnectionInfo = wifiManager. getConnectionInfo();
Log. d(LOG_TAG, connectionInfo. getSSID());
}
}
public class MainActivityextendsAppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super. onCreate(savedInstanceState);
setContentView(R. layout. activity_main);
Toolbar toolbar = (Toolbar) findViewById(R. id. toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R. id. fab);
fab. setOnClickListener(new View. OnClickListener() {
@Override
public void onClick(View view) {
Snackbar. make(view, "Replace with your own action", Snackbar. LENGTH_LONG)
.setAction("Action", null).show();
}
});
super. onCreate(savedInstanceState);
setContentView(R. layout. activity_main);
mDatabaseHelper = new DatabaseHelper(this, "mydatabase. db", null, 1);
mSqLiteDatabase = mDatabaseHelper. getWritableDatabase();
db = new DatabaseHelper(this);
SQLiteDatabasesqdb = db. getWritableDatabase();
String insertQuery = "INSERT INTO " +
DatabaseHelper. ZN_COLUMN+
" (" + DatabaseHelper. CH_COLUMN+ ") VALUES (+intwfi+)";
sqdb. execSQL(insertQuery);
Cursor cursor = mDatabase. query(mDatabaseHelper. TABLE_NAME, new String[]{
DatabaseHelper. ZN_COLUMN, DatabaseHelper. CH_COLUMN}, null,
null,
);
while (cursor. moveToNext()) {
intid = cursor. getInt(cursor. getColumnIndex(DatabaseHelper. CH_COLUMN));
String name = cursor. getString(cursor
.getColumnIndex(DatabaseHelper. ZN_COLUMN));
Log. i("LOG_TAG", "ROW " + id + " HAS NAME " + name);
}
cursor. close();
}
@Override
public Boolean onCreate OptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R. menu. menu_main, menu);
return true;
}
@Override
public Boolean onOptions ItemSelected(MenuItem item) {
intid = item. getItemId();
//noinspectionSimplifiableIfStatement
if (id == R. id. action_settings) {
return true;
}
return super. onOptionsItemSelected(item);
}
public void onbutton1Click(View view) {
DatabaseHelpermDatabaseHelper = new DatabaseHelper(this, "mydatabase. db", null, 1);
SQLiteDatabasesdb;
sdb = mDatabaseHelper. getReadableDatabase();
}
}
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


