Inne działy

 

Android Proximity Sensor (czujnik odległości) - Przykład

 

Każdy telefon z systemem  android jest dostarczany z czujnikami do pomiaru różnych warunków środowiskowych. W tym przykładzie pokażemy, jak korzystać z czujników zbliżeniowych w aplikacji android. Czujniki zbliżeniowe mogą być przydatne dla określenia bliskości obiektu do telefonu. Możemy często zobaczyć, że ekran naszego telefonu jest wyłączany kiedy zbliżamy telefon do naszych uszu, gdy jesteśmy w trakcie rozmowy i ekranu włącza się, gdy odsuniemy go z powrotem. To dlatego, że czujnik zbliżeniowy rozpoznaje obiekt w pobliżu telefonu.

 

W tym przykładzie będziemy zmieniać obraz w kontrolce ImageView gdy dowolny obiekt znajdzie się w pobliżu telefonu. Aby sprawdzić działanie czujnika należy pokryć obszar czujnika (głównie w lewym górnym rogu telefonu) ze swojej strony.

Projekt wykonany w AndroidStudio

Więc zacznijmy:

Utwórz nowy projekt File -> New Project… Pozostaw domyślne nazwy plików dla aktywności MainActivity.java dla pliku wyglądu activity_main.xml

Teraz musimy zaprojektować interfejs użytkownika dla aplikacji Zbliżenie w pliku activity_main.xml umieścimy kontrolkę ImageView, w której będą się zmieniać dwa obrazy jeden gdy obiekt będzie blisko telefonu a drugi gdy obiekt będzie dalej. Nie zapomnij umieścić w katalogach drawable dwóch plików graficznych w moim przypadku blisko.png i daleko.png.

 

activity_main.xml:

 

<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"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="pl.uazz.zblizenie.app.MainActivity">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="75dp"
        android:src="/@drawable/daleko"/>
    
</RelativeLayout>

 

 

Teraz w pliku MainActivity.java uzyskujemy dostęp do urządzenia czujnika za pomocą klasy SensorManager, wystąpienie tej klasy jest wywołane przez getSystemService(SENSOR_SERVICE). Implementujemy interfejs klasy SensorEventListener, aby zastąpić jej metody, aby wykonać czynności gdy ulegną zmianie wartości czujnika.

MainActivity.java

 

package pl.uazz.zblizenie.app;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;


public class MainActivity extends ActionBarActivity implements SensorEventListener {

    private SensorManager mSensorManager;
    private Sensor mSensor;
    ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
        iv = (ImageView)findViewById(R.id.imageView1);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    protected void onResume(){
        super.onResume();
        mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_NORMAL);
    }

    protected void onPause(){
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy){
        //nie wykorzystane
    }

    public void onSensorChanged(SensorEvent event){
        if(event.values[0] == 0){
            iv.setImageResource(R.drawable.blisko);
        }else{
            iv.setImageResource(R.drawable.daleko);
        }
    }
}

Uruchom i wypróbuj aplikację.

 

Zobacz nasze wszystkie kursy

WWW


HTML
HTML - Znaczniki
CSS - Tutorial
CSS - Selektory
PHP
JavaScript

XML

XSLT

Bazy danych


SQL
SQLite
MySQL
PostgreSQL

 

 

Programowanie


C
C++
C#
Java
VisualBasic
Python

Linux


Podstawy Linuxa
Bash
Linuks artykuły

Windows


Excel funkcje
Windows wskazówki
Outlook

Pozotałe działy


Programy
Rozrywka

 

 

 

This email address is being protected from spambots. You need JavaScript enabled to view it.