Экран главного меню представляет собой фон с кнопкой для перехода к экрану показаний температуры окружающей среды. Splash screen – наболее значимый экран приложения так как именно в нем происходит проверка пользователя, проверка его регистрации, подгрузка пользовательских данных которые были ранее добавлены и многое другое. При первом входе в приложении появляется экран SplashScree в котором в потоке запускаются методы которые проверяют регистрацию пользователя (создается запрос к сервисам FireBase), далее если пользователь не зарегистрирован он его перекидывает на экран регистрации в котором он вводит свои пользовательские данные часть которых храниться в базе данных FireBase а часть в локальном хранилище SharedPreferences. Таким образом я считаю, что наиболее играющую роль играет класс SplashScreen, ведь именно в нем происходят все наиболее важные процессы для дальнейшей визуализации приложения и его корректной работы, рисунок 9.
Рисунок 9 – главное меню
Реализация в коде:
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
|
|
public class LoginActivity extends AppCompatActivity {
private EditText edit_mail, edit_password;
private FirebaseAuth firebaseAuth;
private Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_login);
Initialize();
ClickView();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
Mobile Sensors. Данный класс позволяет пользователю не зависимо от подключенных к приложению датчиков снимать показания и знать, что происходит вокруг него. Это возможно благодаря встроенным в телефон сенсорам, в зависимости от модели и года выпуска телефона он будет оснащен достаточным количеством датчиков для того чтобы иметь хорошее представление о том, что происходит вокруг пользователя. Зная это, приложения было оснащено классом который снимает показания с этих самых датчиков: датчик освещенности, датчик температуры, барометр, датчик влажности, датчик индукции магнитных полей, компас, гироскоп, датчик звука и датчик приближенности. Если телефон пользователя в зависимости от модели и года выпуска не располагает таким количеством датчиков, то приложение не будет завершено с ошибкой или аварийно, оно продолжит работать но будет отображать показания только с тех датчиков которые доступны. Устанавливая приложение пользователь будет ознакомлен к каким сенсорам и функциям мобильного устройства он дает доступ приложению, тем самым система предварительно уведомит пользователя о том, что возможно его модель телефона не поддерживает все возможности данного приложения, рисунок 10.
|
|
Рисунок 10 – доступные датчики
Реализация в коде:
databaseReference.child("temperature").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String search = snapshot.getValue().toString();
txt_level.setText(search);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
databaseReference.child("humidity").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String search = snapshot.getValue().toString();
txt_pressure.setText(search);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
databaseReference.child("bar").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String search = snapshot.getValue().toString();
txt_light.setText(search);
Запуск приложения |
Подключение к сетиWiFi |
Обновление состояния контроллера |
Получение данных с контроллера |
нет
Получение доступа к контроллеру |
Отображение на телефоне |
да
Передача данных на телефон |
да
Рисунок 11 – блок-схема работы приложения