PMO 2 Pertemuan 7 Buetooth,WI-FI,NFC

Mengelola Perangkat Bluetooth

Platform Android menyertakan dukungan untuk tumpukan jaringan Bluetooth, yang memungkinkan perangkat untuk secara nirkabel bertukar data dengan perangkat Bluetooth lainnya. Kerangka kerja aplikasi menyediakan akses ke fungsionalitas Bluetooth melalui Android Bluetooth API. API-API ini mengizinkan aplikasi secara nirkabel terhubung ke perangkat Bluetooth lainnya, memungkinkan fitur nirkabel point-to-point dan multipoint.

Hal-hal yang dapat dilakukan bluetooth API :

➜Memindai perangkat Bluetooth lain

➜Melakukan kueri adaptor Bluetooth lokal untuk perangkat Bluetooth yang disandingkan

➜Membangun saluran RFCOMM

➜Terhubung ke perangkat lain melalui pencarian layanan

➜Mentransfer data ke dan dari perangkat lain

➜Mengelola beberapa koneksi

Mode Untuk Dapat Ditemukan Dalam Perangkat Bluetooth

Untuk menemukan perangkat local dengan perangkat lain panggil startActivityForResult(Intent, Int) dengan Maksud aksi ACTION_REQUEST_DISCOVERABLE Ini akan mengeluarkan permintaan untuk mengaktifkan mode dapat ditemukan melalui setelan sistem (tanpa menghentikan aplikasi Anda).

Menemukan Perangkat Bluetooth Jarak Jauh

Sebuah dialog akan ditampilkan, meminta izin pengguna agar perangkat dapat ditemukan, seperti ditunjukkan pada Gambar. Jika pengguna menjawab “Yes,” maka perangkat menjadi dapat ditemukan untuk jangka waktu tertentu. Aktivitas Anda kemudian akan menerima panggilan ke callback onActivityResult()), dengan kode hasil yang sama dengan durasi perangkat dapat ditemukan. Jika pengguna menjawab “No” atau terjadi kesalahan, kode hasil akan menjadi RESULT_CANCELED.

Catatan: Jika Bluetooth belum diaktifkan pada perangkat, maka mengaktifkan kemampuan untuk dapat ditemukan secara otomatis akan mengaktifkan Bluetooth.

Berkomunikasi Melalui Perangkat Bluetooth

Untuk mulai menemukan perangkat, cukup panggil startDiscovery(). Proses ini asinkron dan akan langsung dikembalikan dengan boolean yang menunjukkan apakah penemuan telah berhasil dimulai. Proses penemuan biasanya melibatkan pemindaian pemeriksaan sekitar 12 detik, diikuti dengan pemindaian laman dari setiap perangkat yang ditemukan untuk mengambil nama Bluetooth-nya.

Aplikasi Anda harus mendaftar BroadcastReceiver untuk Maksud ACTION_FOUND agar bisa menerima informasi tentang setiap perangkat yang ditemukan. Untuk setiap perangkat, sistem akan menyiarkan Maksud ACTION_FOUND. Maksud ini akan membawa bidang tambahan kedalam EXTRA_DEVICE dan EXTRA_CLASS, yang berisi BluetoothDevice dan BluetoothClass.

Memantau Konektivitas Internet

Beberapa penggunaan paling umum untuk alarm berulang dan layanan latar belakang adalah menjadwalkan pembaruan rutin data aplikasi dari sumber daya Internet, data cache, atau mengeksekusi unduhan yang berlangsung lama. Namun jika Anda tidak terhubung ke Internet, atau koneksi terlalu lambat untuk menyelesaikan unduhan, bukankah lebih baik membangunkan perangkat untuk menjadwalkan pembaruan? Anda bisa menggunakan ConnectivityManager untuk memeriksa apakah Anda benar-benar terhubung ke Internet, dan jika demikian, dan apakah tipe koneksi yang ada.

Menentukan Tipe Koneksi Anda

Bisa juga menentukan tipe koneksi Internet yang saat ini tersedia. Konektivitas perangkat, bisa disediakan oleh data seluler, WiMAX, Wi-Fi, dan koneksi ethernet. Dengan melakukan kueri tipe jaringan aktif, seperti yang ditampilkan di bawah ini, Anda bisa mengubah laju penyegaran berdasarkan bandwidth yang tersedia.

Memantau Perubahan Dalam Konektivitas

Perubahan pada konektivitas perangkat bisa sangat sering terjadi. Siaran ini terpicu setiap kali Anda beralih antara data seluler dan Wi-Fi. Karena itu sebaiknya pantau siaran ini hanya jika sebelumnya Anda telah menangguhkan pembaruan atau unduhan agar dapat melanjutkannya. Umumnya cukup dengan memeriksa konektivitas Internet sebelum memulai pembaruan dan, jika tidak ada, menangguhkan pembaruan lebih lanjut sampai konektivitas pulih.

Teknik ini memerlukan peralihan penerima siaran yang telah Anda deklarasikan dalam manifest

Pemantauan Wifi dan Detail Jaringan

Anda dapat menggunakan ConnectivityManager untuk mendapatkan status adaptor Wi-Fi. Dari sana Anda dapat memeriksa apakah terhubung atau bahkan tersedia.

Karena metode NetworkInfo.IsConnected() sekarang tidak lagi digunakan di API-23, berikut adalah metode yang mendeteksi apakah adaptor Wi-Fi aktif dan juga terhubung ke titik akses menggunakan WifiManager sebagai gantinya

Pemantauan Wifi dan Detail Jaringan

Karena metode NetworkInfo.IsConnected() sekarang tidak lagi digunakan di API-23, berikut adalah metode yang mendeteksi apakah adaptor Wi-Fi aktif dan juga terhubung ke titik akses menggunakan WifiManager sebagai gantinya

Mengkonfigurasi Wifi dan Memindai Jalur Akses

Wifi Configuration

Menghubungkan perangkat melalui Wifi :

  1. Hubungkan perangkat ke computer host menggunakan kabel USB
  2. Atur perangkat target untuk mendengarkan koneksi TCP/IP
  3. Dengan cara $ adb tcpip 5555
  4. Lepaskan kabel USB dari perangkat target
  5. Temukan alamat IP perangkat Android pada settings > about phone > status > ip address
  6. Hubungkan ke perangkat dengan $ adb connect device_ip_address
  7. Konfirmasikan bahwa computer terhubung dengan perangkat

Mentransfer Data Menggunakan Wifi Direct

Wi-Fi Direct, awalnya disebut Wi-Fi P2P, adalah perangkat standar Wi-Fi yang memungkinkan untuk saling terhubung dengan mudah tanpa memerlukan titik akses nirkabel. Wi-Fi Direct memungkinkan dua perangkat untuk membuat koneksi Wi-Fi langsung tanpa memerlukan router nirkabel. Oleh karena itu, Wi-Fi Direct adalah komunikasi hop radio tunggal, bukan komunikasi nirkabel multihop, tidak seperti jaringan ad hoc nirkabel dan jaringan ad hoc seluler. Mode ad-hoc Wi-Fi, bagaimanapun, mendukung komunikasi radio multi-hop, dengan simpul Wi-Fi menengah sebagai paket relai.

Standar Wifi Direct :

-Wi-Fi

-Wi-Fi Direct Service and Service Discovery

-Wi-Fi Protected Setup

-WPA2

Mentransfer Data Menggunakan Wifi Direct

Cara mentransfer data dengan wifi direct hampir sama ketika mentransfer dengan bluetooth.

  1. Buka aplikasi untuk menampilkan file yang akan dikirim dengan wifi direct.
  2. Pilih file yang akan dikirim, kemudian tekan tombol Share, Lalu pilih tombol wifi direct, Selanjutnya perangkat akan melakukan pemindaian perangkat lain yang mendukung wifi direct.
  3. Setelah perangkat lain terdeteksi, silahkan pilih nama perangkat tersebut, maka file akan melakukan proses pengiriman.

Memindai Tag NFC

////////

Mentransfer Data menggunakan Android Beam

Sebelum berbagi konten, pastikan kedua perangkat tidak terkunci, layarnya aktif, serta NFC dan Android Beam dalam keadaan aktif. Lalu:

  1. Di perangkat, bukakontenyang ingin Anda bagikan seperti peta, foto, atau halaman.
  2. Dekatkan bagian belakang perangkat Anda ke bagian belakang perangkat lainnya.
  3. Saat perangkat terhubung, perangkat akan bersuara atau bergetar dan gambar pada layar akan menjadi lebih kecil.
  4. Jika melihat “Tap untuk beam” atau “Sentuh untuk beam”, tap layar.
  5. Setelah mengirim konten, gambar di layar akan kembali ke ukuran normal.

projek sederhana bluetooth

Pertama buatlah project baru di android studio

pada MainActivity.java

package com.example.nurizkillah.pmo2_rps7;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SwitchCompat;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Set;

public class MainActivity extends AppCompatActivity {
//TODO : variabel
SwitchCompat on_off,visible;
TextView etxt_on_off,tv_visible;

private BluetoothAdapter BA;
private Set<BluetoothDevice> pairedDevices;
ListView lv;

 

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

 

//TODO : inisiasi variabel
on_off = findViewById(R.id.switch_on_off);
visible = findViewById(R.id.switch_visble);

BA = BluetoothAdapter.getDefaultAdapter();
lv = (ListView) findViewById(R.id.listView);
etxt_on_off = findViewById(R.id.tv_on_off);
tv_visible = findViewById(R.id.tv_visible);

 

//TODO : ketika switch di klik
on_off.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked){
bt_on();
etxt_on_off.setText("Turn Bluetooth OFF");
on_off.setChecked(true);
visible.setVisibility(View.VISIBLE);
daftar_bt_terpasang();
}else {
bt_off();
etxt_on_off.setText("Turn Bluetooth ON");
on_off.setChecked(false);
visible.setVisibility(View.GONE);
}
}
});
visible.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
mode_terlihat();
tv_visible.setText("Change Visibility (Visible)");
visible.setChecked(true);

}else {
mode_takterlihat();
tv_visible.setText("Change Visibility (Unvisible)");
visible.setChecked(false);
}
}
});

}

 

//TODO : method matikan bluetooth
public void bt_off()
{
BA.disable();
Toast.makeText(MainActivity.this,"Turned bt_off",Toast.LENGTH_LONG).show();

}
//TODO : method nyalakan bluetooth
public void bt_on()
{
BA.enable();

daftar_bt_terpasang();

}
//TODO : method bluetooth mode terlihat
public void mode_terlihat()
{
Intent getVIsible = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(getVIsible, 0);
}
//TODO : method bluetooth mode takterlihat
public void mode_takterlihat(){
Intent getUnvisible = new Intent(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
startActivityForResult(getUnvisible,0);
}
//TODO : method menampilkan daftar bluetooth yang sudah pernah terpasang
public void daftar_bt_terpasang()
{
pairedDevices = BA.getBondedDevices();

ArrayList list = new ArrayList();
for (BluetoothDevice bt : pairedDevices)
list.add(bt.getName());

final ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1,list);
lv.setAdapter(adapter);
}

 

}

Layout  activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#ffff"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_on_off"
android:text="Turn Bluetooth on"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_on_off"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="50dp"
android:layout_height="wrap_content" />

 

</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#ffff"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_visible"
android:text="Change Visibilty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_visble"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="50dp"
android:layout_height="wrap_content" />

 

</RelativeLayout>

 

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="Paired Devices "/>
<View
android:layout_width="match_parent"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:layout_height="2dp"
android:background="#535353"/>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentBottom="true" />

 

</LinearLayout>

HASILNYA:

POWER POINT

PEMROGRAMAN-MOBILE-2-PERTEMUAN-7-KELOMPOK-4 rps7 klompok 3

project

PMO RPS 7