В данной статье мы напишем простое приложение, отображающее уровень заряда батареи, температуру батареи и список доступных сенсоров на устройстве.
В последней версии ADT появился очень удобный шаблон для новых проектов, называется он Empty Activity.
Шаблон подкупает своей простотой, т.к. не создает ничего лишнего.
Для вывода нужной нам информации отредактируем единственный файл разметки activity_main.xml
Визуально он будет выглядеть так:
[cce lang=”xml” tab_size=”2″ no_links=”false”]
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”${relativePackage}.${activityClass}” >
<TextView
android:id=”@+id/tv1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/hello_world” />
<TextView
android:id=”@+id/tv3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/tv2″
android:layout_marginTop=”77dp”
android:text=”@string/hello_world” />
<TextView
android:id=”@+id/tv2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/tv1″
android:layout_marginTop=”53dp”
android:text=”@string/hello_world” />
</RelativeLayout>
[/cce]
Теперь можно создать новый класс Tools , и в нем реализовать функции для получения информации об устройстве.
Уровень заряда батареи получим при помощи вот этой функции:
[cce lang=”java” tab_size=”2″ no_links=”false”]
public static String getBatteryLevel(Context c) {
Intent batteryIntent = c.registerReceiver(null, new IntentFilter(
Intent.ACTION_BATTERY_CHANGED));
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// Error checking that probably isn’t needed but I added just in case.
if (level == -1 || scale == -1) {
return String.valueOf(50.0f);
}
return String.valueOf(((float) level / (float) scale) * 100.0f) + “%”;
}
[/cce]
На вход её нужно подать контекст (Context ), на выходе получим строчку (String).
Температуру батареи получим при помощи вот этой функции, работает она также как и предыдущая:
[cce lang=”java” tab_size=”2″ no_links=”false”]
public static String getBatteryTemperatute(Context c) {
Intent intent = c.registerReceiver(null, new IntentFilter(
Intent.ACTION_BATTERY_CHANGED));
float temp = ((float) intent.getIntExtra(
BatteryManager.EXTRA_TEMPERATURE, 0)) / 10;
return String.valueOf(temp) + “°C”;
}
[/cce]
Список доступных сенсоров на устройстве получим следующей функцией:
[cce lang=”java” tab_size=”2″ no_links=”false”]
public static ArrayList<String> getSensorsList(Context c) {
ArrayList<String> res = new ArrayList<String>();
SensorManager mSensorManager = (SensorManager) c
.getSystemService(Context.SENSOR_SERVICE);
// List of Sensors Available
List<Sensor> msensorList = mSensorManager
.getSensorList(Sensor.TYPE_ALL);
int i;
for (i = 0; i < msensorList.size(); i++) {
res.add(msensorList.get(i).getName());
}
return res;
}
[/cce]
На вход она также получает текущий контекст (Context), а на выходе даст список строк (ArrayList<String>), который мы преобразуем в одну строку.
Теперь осталось при запуске приложения вызвать все три функции и результат их поместить в TextView нашей статической разметки activity_main.xml
Вот весь код нашего изящного класса MainActivity:
[cce lang=”java” tab_size=”2″ no_links=”false”]
package com.rusdelphi.tools;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
TextView tv1 = (TextView) findViewById(R.id.tv1);
tv1.setText(“Уровень заряда батареи ” + Tools.getBatteryLevel(this));
TextView tv2 = (TextView) findViewById(R.id.tv2);
tv2.setText(“Температура батареи ” + Tools.getBatteryTemperatute(this));
TextView tv3 = (TextView) findViewById(R.id.tv3);
tv3.setText(“Список доступных сенсоров на устройстве ”
+ Tools.getSensorsList(this).toString());
}
}
[/cce]
Приложение получилось очень простым и потому поддерживается большим числом устройств.
Уведомление: Получение информации об устройстве | rusdelphi.com
Уведомление: Получение информации с сенсоров устройства Android | rusdelphi.com