LAPORAN
PENELITIAN TERAPAN SWADANA
TIM PENGUSUL
WAHYU SULISTIYO, S.T., M.Kom. (NIDN. 0001047705)
ARI SRIYANTO N., S.T.,M.T.,M.Sc. (NIDN. 0004097405)
BUDI SUYANTO, S.T, M.Eng (NIDN. 0003107605)
Drs. PARSUMO RAHARJO, M.Kom. (NIDN. 0022086005)
SUKAMTO, S.Kom, M.T (NIDN. 0017017106)
Judul Penelitian : Inovasi Sistem Promosi Melalui Foto Udara Quadcopter dengan Modifikasi
dan Jejaring Sosial
TOR : Pengembangan Sistem Telekomunikasi dan Informasi
Ketua Peneliti :
a. Nama Lengkap : Wahyu Sulistiyo, S.T., M.Kom.
b. NIDN : 0001047705
c. Jabatan Fungsional : Lektor
d. Jurusan/Prodi : T. Elektro/ T. Informatika
e. Nomor HP : 085740119501
f. Alamat Surel (e-mail) : w4hyu5@yahoo.com, wahyu.sulistiyo@polines.ac.id
Anggota Peneliti (1) :
a. Nama Lengkap : Ari Sriyanto Nugroho, S.T., M.T., M.Sc.
b. NIDN : 0004097405
c. Jurusan/Prodi : T. Elektro/ T. Informatika
Anggota Peneliti (2) :
a. Nama Lengkap : Budi Suyanto, S.T., M.Eng
b. NIDN : 0003107605
c. Jurusan/Prodi : T. Elektro/ T. Informatika
Anggota Peneliti (3) :
a. Nama Lengkap : Drs. Parsumo Raharjo, M.Kom.
b. NIDN : 0022086005
c. Jurusan/Prodi : T. Elektro/ T. Informatika
Anggota Peneliti (4) :
a. Nama Lengkap : Sukamto, S.Kom., M.T.
b. NIDN : 0017017106
c. Jurusan/Prodi : T. Elektro/ T. Informatika
Lama Penelitian : 4 Bulan
Biaya Penelitian : Rp. 7.500.000
Semarang, Oktober 2015
Mengetahui,
Direktur Ketua Peneliti
Tahun 2014, Drone berkembang dengan pesat, Di Indonesia, quadcopter menjadi kategori
”hot list” di marketplace Tokopedia. Perkembangan Drone yang semakin maju ini dapat
dimanfaatkan untuk beberapa keperluan seperti alat untuk foto udara, pengantar barang
ataupun sekedar untuk mainan aeromodeling.
Sebagai peranti foto udara Drone memberikan pemandangan secara keseluruhan yang sama
sekali tidak mungkin dari permukaan tanah. Misalnya melihat semua bidang properti.
Menunjukkan kelebihan dari lokasinya yang diambil dari atas. Tampilkan rute akses dan
perkembangan pembangunan yang ada disekitarnya. Gambar udara dapat membuat
dokumen promosi menjadi sempurna, dengan demikian perencanaan pengembangan
menjadi lebih matang, Disamping berfungsi sebagai alat bantu presentasi, materi promosi
atau pemasaran, dan tentu saja ini adalah cara yang mengagumkan untuk menampilkan
properti anda. Fotografi udara dapat digunakan untuk real estate, fotografi komersial dan
banyak lagi.
Pada penelitian ini pengembangan aplikasi pengendali Quadcopter Drone difokuskan pada
pengambilan data foto menggunakan Drone Quadcopter dan dapat dimodifikasi. Aplikasi
digunakan untuk membantu promosi di jaringan sosial. Pengembangan aplikasi
menggunakan bahasa pemrograman visual.
Aplikasi berhasil dikembangkan dengan menggunakan metode Waterrfall. Sistem software
dan Quadcopter dipisah menggunakan gateway media streaming VLC, Sistem
pemodifikasi foto berhasil diselesaikan dengan manipulasi bitmap dan hasilnya dikirim ke
media sosial facebook.
DAFTAR ISI
Hal
Halaman Cover i
Halaman Pengesahan ii
Ringkasan iii
Daftar Isi iv
Daftar Tabel v
Daftar Gambar vi
Daftar Lampiran viii
BAB 1 Pendahuluan 1
BAB 2 Tinjauan Pustaka 3
BAB 3 Tujuan dan Manfaat Penelitian 9
BAB 4 Metodologi Penelitian 10
BAB 5 Hasil dan Pembahasan 12
BAB 6 Kesimpulan dan Saran 27
Daftar Pustaka
Lampiran
DAFTAR TABEL
Hal
Tabel 5.1 Analisis Hasil 26
DAFTAR GAMBAR
Hal
Gambar 2.1 Model X Quadcopter 3
Gambar 2.2 Modul Buetooth 4
Gambar 2.3 Aplikasi Navigasi Quadcopter 4
Gambar 2.4 Aplikasi Multiwii 5
Gambar 2.5 Model Sistem Quadcopter untuk promosi 5
Gambar 2.6 Gambar Bitmap 7
Gambar 5.1 FlowChart Sistem 13
Gambar 5.2 Desain Antarmuka Aplikasi Desktop 14
Gambar 5.3 Desain Antarmuka Client Facebook 14
Gambar 5.4 Sistem Inovasi Promosi Melalui Foto Udara Quadcopter
Dengan Modifikasi dan Jejarin Sosial 15
Gambar 5.5 Quadcopter bergerak kekiri 16
Gambar 5.6 Quadcopter bergerak keatas kebawah 16
Gambar 5.7 Pergerakan kepala Quadcopter 16
Gambar 5.8 Quadcopter bergerak maju dan mundur 17
Gambar 5.9 Quadcopter menyesuaikan gerakan 17
Gambar 5.10 Quadcopter menyesuaikan gerakan keatas kebawah 18
Gambar 5.11 Kepala Quadcopter bergerak menyesuaikan sitck pada rudder 18
Gambar 5.12 Gerakan Quadcopter menyesuaikan untuk maju dan mundur 18
Gambar 5.13 Menyesuaikan rudder trim 19
Gambar 5.13 Menyesuaikan elevator trim 19
Gambar 5.15 Menyesuaikan aileron trim 20
Gambar 5.16 Jendela VLC Player – Stream 20
Gambar 5.17 Open Media Network Protokol 20
Gambar 5.18 Jendela Stream Output 21
Gambar 5.19 Jendela Stream Output- destinations 21
Gambar 5.20 Jendela Stream Output- destinations-port:1234 21
Gambar 5.21 HTPP authentication 21
Gambar 5.22 Streaming-VLC media player 22
Gambar 5.23 Streaming sukses 22
Gambar 5.24 Hasil Video VLC 23
Gambar 5.25 Hasil Foto QuadCopter Walkera Streaming 23
Gambar 5.26 Aplikasi ClientFacebook 24
Gambar 5.27 Form Login Facebook 24
Gambar 5.28 Data Pesan dan Foto 25
Gambar 5.29 Hasil foto di Wall Facebook 25
Lampiran
1. SK Direktur
2. Surat Selesai Revisi
3. Foto
4. CV Peneliti
5. Kode Program
BAB 1 PENDAHULUAN
Dengan potensi yang besar, aplikasi yang memanfaatkan Drone belum banyak
dibuat. Perkembangan penelitian Drone di Indonesia masih berfokus pada
pembuatan Drone itu sendiri. Pada tahun 2012 Whanindra dkk melakukan
penelitian “Perancangan dan Implementasi Kontrol Fuzzy-PID pada Pengendalian
AutoTake-Off Quadcopter UAV”. Penelitiannya fokus pada menjaga keseimbangan
1
Drone Quadcopter tertutama pada saat take-off [Whaninda dkk,2013]. Penelitian
yang lain Sistem Navigasi Ruangan Quadcopter dengan menggunakan Sensor
Elektronik sudah dibuat oleh Yosa Rosario dkk. Penelitiannya fokus pada
kemampuan navigasi Quadcopter [2]. Quadcopter yang digunakan sebagai peranti
foto udara juga sudah dibuat. Penelitian tentang perancangan dan implementasi
Quadcopter untuk foto udara objek wisata di kota Palembang [Shinta,2014].
1.2 Permasalahan
Perkembangan Drone Quadcopter yang pesat dan semakin stabilnya kemampuan
Drone Quadcopter memerlukan aplikasi pendukung yang membuat sistem Drone
ini lebih fungsial. Di penelitian ini dirumuskan bagaimana membuat sistem yang
bisa terhubungan dengan sistem Quadcopter, memodifikasi gambar dan membuat
koneksi ke jejaring sosial untuk promosi
2
BAB 2 TINJAUAN PUSTAKA
3
Gerakan Yaw
Gerakan ini dilakukan dengan menambah atau mengurangi kecepatan sepasang
motor(kanan dan kiri) secara serempak sembari melakukan pengurangan atau
penambahan kecepatan sepasang motor lainnya(depan dan belakang) secara
serempak.Gerakan ini bertumpu pada sumbu Z.
Penelitian tentang navigasi Quadcopter juga telah dilakukan oleh Yosa Rosario dkk
di tahun 2013. Penelitiannya fokus pada navigasi Quadcopter, Quadcopter
berkomunikasi dengan komputer dengan mengirimkan letak posisi dari satu posisi
ke posisi yang lain secara wireless. Komunikasi menggunakan modul Bluetooth
seperti Gambar 2.2 [Yosa dkk,2013].
Proses terbang Quadcopter dilakukan dengan model manual dan otomatis yang
dianalisis menggunakan aplikasi komputer seperti Gambar 2.3 berikut.
4
Penelitian lainnya tentang Quadcopter dilakukan oleh Shinta Puspitasari dkk di
tahun 2014. Penelitiannya tentang penggunaan Quadcopter sebagai foto udara
tempat-tempat wisata di kota Palembang. Quadcopter dilengkapi dengan kamera
foto dan dikendalikan dengan menggunakan aplikasi Multiwii GUI. Aplikasi
pengendali Quadcopter seperti Gambar 2.4 berikut.
Dari penelitian ini Quadcopter sudah dapat digunakan untuk mengambil foto objek
wisata dengan hasil yang menarik.
5
Sistem yang dibangun memanfaatkan Quadcopter Walkera QR W100S sebagai
peranti pengambil foto udara. Peranti ini dikendalikan di bawah (ground)
menggunakan bantuan Komputer PC melalui peranti media akses WIFI. Aplikasi
mempunyai kemampuan navigasi dan penangkap foto. Dari proses ini aplikasi
pengolah foto akan menambahkan efek dari foto udara yang sudah diambil. Jika
hasilnya dirasa cukup bagus, aplikasi dapat melakukan subunit ke Facebook hasil
foto udara yang sudah dimodifikasi dengan keterangan tambahannya sebagai sarana
promosi.
Walkera QR W100S
Walkera QR W100S merupakan jenis Drone yang mudah didapatkan di pasaran
Indonesia. Drone ini memiliki Spesifikasi teknis sebagai berikut
- Mendukung iPhone dan iPads, serta Pemancar Devo
- WIFI
- Rentang kendali tetap tidak berubah di 80 meter
- Kendali yang stabil dengan 6 Axis Gyro
- 30W pixel kamera HD
- Video Real Time
- Waktu Penerbangan +/- 10 Menit
Gambar Bitmap
Dalam grafik komputer, Gambar Bitmap adalah sebuah struktur data yang mewakili
susunan piksel warna yang ditampilkan pada layar monitor, kertas atau media
tampilan lainnya. Secara teknis gambar bitmap digambarkan dengan lebar dan
tinggi dalam piksel dan dalam angka bit per piksel. Beberapa format gambar bitmap
yang sering dijumpai: GIF, JPEG, BMP dan PNG.
6
2. Mampu menangkap nuansa warna dan bentuk yang natural
7
menciptakan. Anda tidak hanya dapat mengembangkan Wet aplikasi, tetapi
Facebook juga membuka platform desktop yang tersambung ke Internet
aplikasi dengan yang klien perpustakaan Java. Dengan membuka platform ini
sampai dengan baik berbasis web dan aplikasi desktop dan menawarkan untuk
pengguna umum teknologi yang sama bahwa Facebook pengembang gunakan
untuk membangun aplikasi, Facebook adalah memposisikan diri untuk menjadi
pemain utama dalam masa depan pembangunan sosio-teknis.
8
BAB 3 TUJUAN DAN MANFAAT
3.1 Tujuan
Tujuan dari penelitian ini adalah untuk membuat sistem foto udara Quadcopter
dengan aplikasi pengendalinya yang digunakan untuk sistem promosi ke jejaring
sosial.
3.2 Manfaat
Dengan adanya penelitian ini diharapkan dapat memberi manfaat:
- Bertambahnya aplikasi yang dapat mengendalikan Quadcopter
- Dapat digunakan sebagai media promosi yang unik dalam bidang bisnis
- Publikasi Ilmiah
9
BAB 4 METODOLOGI PENELITIAN
Pada penelitian ini untuk mencapai target yang sudah ditetapkan dilaksanakan
menggunakan metode SDLC (System Development Life Cycle Waterfall).
1. Tahap Analisis
Tahap ini digunakan untuk mengumpulkan bahan dan memberi batasan
permasalahan dalam mengembangan aplikasi Inovasi Sistem Promosi Melalui
Foto Udara Quadcopter dengan Modifikasi dan Jejaring Sosial. Fitur yang akan
dikembangkan:
a. Aplikasi Pemodifikasi Foto
b. Aplikasi Promosi ke Jejaring Sosial Facebook
2. Tahap Desain
Tahap ini digunakan untuk menentukan solusi desain dari permasalahan
aplikasi:
a. Desain antarmuka hardware dan software
b. Desain Proses
3. Tahap Implementasi
Tahap ini dilakukan untuk melakukan implentasi aplikasi
a. Implementasi Aplikasi Pemodifikasi Foto
b. Implementasi Aplikasi Jejaring Sosial
4. Tahap Pengujian
Pengujian dilakukan untuk:
a. Pengujian Aplikasi pemodifikasi Foto
b. Pengujian Publikasi ke Jejaring Sosial Facebook
c. Pengujian Integrasi
5. Tahap Pemeliharaan
10
Pemeliharaan dilakukan untuk penulisan laporan, publikasi dan tahapan
pengembangan berikutnya
11
BAB 5 HASIL DAN PEMBAHASAN
12
mulai
Koneksi ke
QuadCopter
Ambil Foto
Modifikasi
Unggah
Ulangi
Selesai
Dalam Desain Flowchart ini fungsi-fungsi yang ada dikelompokkan dalam desain
antarmuka aplikasi sebagai berikut:
- Desain antarmuka aplikasi Inovasi Desktop (Gambar 5.2)
- Desain antarmuka aplikasi Client Facebook (Gambar 5.3)
13
Gambar 5.2 Desain Antarmuka Aplikasi Desktop
14
3. Tahapan Implementasi dan Pengujian
Implementasi sistem dibagi dalam beberapa bagian yang akan diuji tiap bagiannya
dalam tahapan pengujian. Sistem secara keseluruhan dapat digambarkan dalam
diagram blok berikut
Quadcopter
Gambar 5.4 Sistem Inovasi Sistem Promosi Melalui Foto Udara Quadcopter
dengan Modifikasi dan Jejaring Sosial
Mode 1 merupakan mode radio remote untuk tuas throttle radio remote yang
1) Ketika aileron stick digerakan kekiri dan kekanan, maka Quadcopter akan
15
Gambar 5.5 Quadcopter bergerak kekiri
2) Ketika throttle stick digerakan naik atau kebawah, Quadcopter akan keatas atau
3) Ketika rudder stick digerakkan ke kiri atau kekanan, kepala Quadcopter akan
16
4) Ketika elevator stick digerakkan naik atau turun, Quadcopter akan
Mode 2 merupakan mode radio remote untuk tuas throttle radio remote yang
17
Gambar 5.10 Quadcopter menyesuaikan gerakan keatas kebawah
3) Ketika rudder stick digerakkan kekanan atau kekiri, maka kepala Quadcopter
18
c. Trimming the flight actions
menggunakan tombol-tombol yang ada pada radio remote. Tombol-tombol ini yang
Memindahkan rudder trim jika kepala quadcopter kekiri selama lepas landas.
Gerakkan elevator trim kedepan selama lepas landas; jika bergerak keatas. (Lihat
Gambar 5.14).
Gerakkan aileron trim kekanan jika quadcopter lepas landas; jika tidak gerakkan
19
Gambar 5.15 Menyesuaikan aileron trim
quadcopter. Untuk melakukan streaming via VLC, maka jalankan terlebih dahulu
quadcopter.
20
Gambar 5.18 Jendela Stream Output
4) Pada “Destinations” group, pilih “HTTP” dan klik “Add”. (Lihat Gambar
5.19).
5) Pilih dan ketikan port 1234 dan pilih Video- MPEG 2 +MPGA(TS), kemudian
masukkan user name = admin, dan Password = admin123, lalu tekan tombol
21
7) Setelah menekan tombol OK maka tampilan layar utama akan menunjukkan
stream. Tunggu hingga video stream bisa di lihat. (Lihat Gambar 5.22).
Aplikasi Desktop
Proses Eksekusi Aplikasi Desktop dengan menjalankan Aplikasi Desktop.
Kemudian dengan membuat hubungan dengan QuadCopter Streaming. Untuk
pengujian saat ini dilakukan dengan mengambil File sebagai simulasi Streaming.
Sistem dibangun dengan konsep Loose Coupling. Sistem ini bisa berjalan mandiri
22
tanpa tergantung pada jenis QuadCopter yang dipakai. Media Streaming VLC
digunakan untuk memastikan konsep loose coupling ini berhasil dengan baik. Hasil
pengambilan video streaming VLC (disimulasikan dari file) seperti Gambar 5.24.
23
Unggah foto dilakukan dengan aplikasi Client Facebook yang dihubungkan dengan
aplikasi desktop.
Aplikasi ClientFacebook
Aplikasi ClientFacebook digunakan untuk unggah foto hasil modifikasi. Tampilan
Aplikasi seperti pada Gambar 5.26
Untuk bisa upload foto, Facebook meminta autentikasi yang dilakukan dalam
proses login aplikasi Facebook. Gambar Login 5.27 sebagai hasil autentikasi
24
Isian data pesan dan foto seperti pada Gambar 5.28
25
5.2 Analisis hasil
Hasil implementasi dan pengujian direkapitulasi dalam bentuk Tabel 5.1 berikut
Tabel 5.1 Analisis Hasil
No Fitur Hasil Keterangan
1 Gateway Streaming Baik Media Gateway Input-
ouput stream
2 Play Video Stream desktop Baik Play Stream Video
3 Modifikasi bingkai Baik Pixel JPEG
4 Capture foto dan bingkai Baik File JPEG Tes.JPG
5 Unggah Foto Baik Teknologi WPF
6 Video Walkera Kurang Baik Resolusi 0,3 Mpixel,
tidak ada teknologi
gimbal
Dari pengamatan sistem hardware dan software dapat dikatakan bahwa sistem
sudah dapat berjalan dengan baik. Konsep loose coupling aplikasi berjalan dengan
baik dengan media streaming gateway VLC sehingga hardware Quadcopter tidak
berpengaruh pada sistem software.
Video Streaming dengan menggunakan Walkera QR W100S menggunakan kamera
0,3 Mpixel dan tidak menggunakan teknologi gimbal sehingga hasil kamera tidak
terlalu tajam dan kurang stabil.
Aplikasi berjalan dengan baik dan dan dapat mengambil hasil video streaming
dengan teknik capture pixel beserta bingkainya dan berhasil melakukan unggah ke
Wall Facebook.
26
BAB 6 Kesimpulan dan Saran
6.1 Kesimpulan
Kesimpulan dari hasil penelitian sebagai berikut
1. Sistem berhasil dibangun dengan konsep loose coupling untuk memisahkan
sistem hardware quadcopter dan software aplikasi
2. Pengujian sistem hardware dengan menggunakan Walkera QR W100S
menghasilkan video stream dengan kualitas 0,3 Mpixel. Kamera yang tidak
menggunakan teknologi gimbal meyebakan kamera kurang stabil
3. Aplikasi pemodifikasi sudah berhasil menggabungkan hasil capture video
streaming dan bingkai Jpeg ke sebuah file Jpeg.
4. Aplikasi berhasil melakukan unggah pesan dan foto Jpeg ke Wall Facebook
6.2 Saran
Saran dari penelitian sebagai berikut
1. Penggunaan hardware quadcopter yang lebih baik untuk pengujian integrasi
dalam bentuk foto udara
2. Penggunaan teknologi WPF untuk menggabungan dua buah aplikasi
menjadi satu aplikasi tunggal
27
DAFTAR PUSTAKA
TOTAL Rp7.500.000
Lampiran 2
1. Ketua Peneliti
1. Nama lengkap : Wahyu Sulistiyo,S.T., M.Kom
2. Jenis Kelamin : Laki-Laki
3. Pangkat/Gol/NIP : Penata/ III C / 197704012005011001
4. Jabatan Fungsional : Lektor
5. Jurusan/Program Studi : Teknik Elektro/Teknik Informatika
6. Perguruan Tinggi : Politeknik Negeri Semarang
7. Riwayat Pendidikan :
8. Pengalaman Penelitian :
- Desain Aplikasi Multimedia dengan Data Dinamis untuk mendukung metode
pembelajaran berbasis E-Learning
- Desain dan rancang bangun perangkat lunak pemonitor pengendali motor DC
berbasis PID dengan variabel tunning
- Rancang bangun aplikasi Android untuk navigasi lokasi objek wisata di kota
Semarang dibantu perangkat GPS
- Rancang bangun sistem Monitoring objek bergerak berbasis SMS dengan
tampilan peta Google dibantu perangkat GPS
8. Pengalaman Penelitian :
a. Penelitian pembuatan system ajar berbasis e-learning tahun 2010
b. Penelitian pembuatan system informasi pasien berbasis smart card 2010
c. Desain 3 Dimensi Karakter Wayang Kulit Gagrag Jogjakarta,
UNBRAW Malang Scietec 2012
8. Riwayat Pendidikan
Pendidikan Tempat Tahun Spesialisasi
S1 IKIP Semarang 1984
S2 UGM Yogyakarta 2002 Komputer
Riwayat Pendidikan
Tempat Titel/
Tempat Tahun Lulus Bid. Spesialisasi
Pendidikan Ijazah
STMIK
Yogyakarta 1998 Sarjana Teknik Informatika
Akakom
Sistem Kom &
USU Medan 2011 Magister
Informatika
B. Riwayat Pendidikan
SD SMP SMA
Perguruan
Tinggi
Nama SD Negeri 2 SMP Negeri 1 SMA Politeknik
Institusi Karangsari Kendal Negeri 2 Negeri
Kendal Semarang
Jurusan IPA Teknik
Elektro
Tahun 1999-2005 2006-2009 2009-2012 2012-
Masuk- present
Lusus
Syarif Hidayatullah
NIM 3.34.12.0.21
Surat Pernyataan Ketua Peneliti
Yang diusulkan dalam penelitan terapan Politeknik Negeri Semarang pada tahun
anggaran 2015 bersifat original dan belum pernah dibiaya oleh lembaga/sumber
dana lain.
Aplikasi Desktop
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace proVLC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
MessageBox.Show("Error");
}
}
if (pbxCap.Image != null)
{
pbxCap.Image.Dispose();
pbxCap.Image = null;
}
TakeCroppedScreenShot(@"D:\test.jpg", this.Left + myPanel.Left,
this.Top + myPanel.Top, myPanel.Width, myPanel.Height, ImageFormat.Jpeg);
pbxCap.Image = Image.FromFile(@"D:\test.jpg");
pbxCap.SizeMode = PictureBoxSizeMode.StretchImage;
}
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
vlc.playlist.add(@"file:///" + openFileDialog1.FileName,
openFileDialog1.SafeFileName, null);
}
}
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pbxFrame.Image = null;
pbxFrame.Image =
Image.FromFile(openFileDialog1.FileName,true);
pbxFrame.SizeMode = PictureBoxSizeMode.StretchImage;
}
}
System.Diagnostics.Process.Start(@"ClientFacebook\FbAuthWpf.exe");
}
}
}
Aplikasi ClientFacebook <MODIFIKASI DARI MSDN MAGAZINE>
<MainWindow.XAML>
Imports Facebook
Imports FbAuthWpf.Presenters
'Imports System
'Imports System.Windows
'Imports System.Windows.Controls
'Imports System.Windows.Navigation
Namespace FbAuthWpf
''' <summary>
''' Interaction logic for MainWindow.xaml
''' </summary>
Partial Public Class MainWindow
Private ReadOnly _viewPresenter As MainWindowPresenter
If oauthResult.IsSuccess Then
_viewPresenter.LoginSucceeded(oauthResult)
Else
_viewPresenter.LoginFailed(oauthResult)
End If
End Sub
Private Sub loginButton_Click(ByVal sender As Object, ByVal e As
RoutedEventArgs)
_viewPresenter.Login()
End Sub
<MainWindowsPresenter.VB)
Imports System.ComponentModel
Imports Facebook
Imports FbAuthWpf.Common
Namespace FbAuthWpf.Presenters
Public Class MainWindowPresenter
Implements INotifyPropertyChanged
''' <summary>
''' Gets and sets the FB token of the current user.
''' </summary>
Public Property Token As String
Get
Return _token
End Get
Set(ByVal value As String)
_token = value
OnPropertyChanged("Token")
End Set
End Property
''' <summary>
''' Gets and sets the name of the currently logged user.
''' </summary>
Public Property UserName As String
Get
Return _userName
End Get
Set(ByVal value As String)
_userName = value
OnPropertyChanged("UserName")
End Set
End Property
''' <summary>
''' Gets and sets the URL of the FB user picture.
''' </summary>
Public Property UserPicture As String
Get
Return _userPicture
End Get
Set(ByVal value As String)
_userPicture = value
OnPropertyChanged("UserPicture")
End Set
End Property
''' <summary>
''' Gets and sets the text to post.
''' </summary>
Public Property Status As String
Get
Return _status
End Get
Set(ByVal value As String)
_status = value
OnPropertyChanged("Status")
End Set
End Property
''' <summary>
''' Gets and sets the photo path to post.
''' </summary>
Public Property PhotoPath As String
Get
Return _photoPath
End Get
Set(ByVal value As String)
_photoPath = value
OnPropertyChanged("PhotoPath")
End Set
End Property
''' <summary>
''' Shows and hides programmatically the web browser used to log to
FB.
''' </summary>
Public Property ShowBrowser As Boolean
Get
Return _showBrowser
End Get
Set(ByVal value As Boolean)
_showBrowser = value
OnPropertyChanged("ShowBrowser")
End Set
End Property
''' <summary>
''' Shows and hides programmatically the web browser used to log to
FB.
''' </summary>
Public Property IsLogged As Boolean
Get
Return _isLogged
End Get
Set(ByVal value As Boolean)
_isLogged = value
OnPropertyChanged("IsLogged")
End Set
End Property
''' <summary>
''' Triggers the authentication process towards Facebook
''' </summary>
Public Sub Login()
Dim loginUrl = FbHelpers.GetLoginUrl
ShowBrowser = True
_view.Browser.Navigate(loginUrl)
End Sub
''' <summary>
'''
''' </summary>
Public Sub Logout()
ResetUserInfo()
End Sub
''' <summary>
'''
''' </summary>
Public Sub PostUpdate()
If String.IsNullOrEmpty(PhotoPath) Then
FbHelpers.Post(Token, Status)
Else
FbHelpers.PostWithPhoto(Token, Status, PhotoPath)
End If
Status = String.Empty
PhotoPath = String.Empty
End Sub
''' <summary>
'''
''' </summary>
Public Sub BrowseForJpegFile()
Dim dialog = New Microsoft.Win32.OpenFileDialog With {.DefaultExt
= ".jpg", .Filter = "JPEG |*.jpg"}
Dim result = dialog.ShowDialog
If result = True Then
PhotoPath = dialog.FileName
End If
End Sub
''' <summary>
'''
''' </summary>
''' <param name="oauthResult"></param>
Public Sub LoginSucceeded(ByVal oauthResult As FacebookOAuthResult)
ShowBrowser = False
Dim token = FbHelpers.GetAccessToken(oauthResult)
Me.Token = token
Dim user As Object = FbHelpers.GetUser(token)
''' <summary>
'''
''' </summary>
''' <param name="result"></param>
Public Sub LoginFailed(ByVal result As FacebookOAuthResult)
ShowBrowser = False
IsLogged = False
MessageBox.Show(result.ErrorDescription)
End Sub
#Region "Private"
Private Sub ResetUserInfo()
UserName = "No user currently logged in."
UserPicture = String.Empty
IsLogged = False
Status = "Another post in the wall"
End Sub
#End Region
#Region "INotifyPropertyChanged"
Public Event PropertyChanged As PropertyChangedEventHandler Implements
INotifyPropertyChanged.PropertyChanged
Public Sub OnPropertyChanged(ByVal propertyString As String)
Dim handler As PropertyChangedEventHandler = PropertyChangedEvent
If Not handler Is Nothing Then
handler(Me, New PropertyChangedEventArgs(propertyString))
End If
End Sub
#End Region
End Class
End Namespace
<FBHelpers.VB>
Imports System.Configuration
Imports System.IO
Imports Facebook
Namespace FbAuthWpf.Common
Public Class FbHelpers
Public Shared Function GetLoginUrl() As String
Dim client = New FacebookClient
Dim fbLoginUri = client.GetLoginUrl(New With {Key .client_id =
ConfigurationManager.AppSettings("fb_key"), Key .redirect_uri =
"https://www.facebook.com/connect/login_success.html", Key .response_type =
"code", Key .display = "popup", Key .scope = "email,publish_actions"})
Return fbLoginUri.ToString
End Function
Return result.access_token.ToString
End Function
<VisibilityConverter.VB>
Imports System.Globalization
Namespace FbAuthWpf.Common
Public Class VisibilityConverter
Implements IValueConverter
Return value
End Function