Код класса 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