Φτιάχνοντας ένα Έξυπνο Σπίτι, και έλεγχος από το Android (μέρος 12ο)
- Πέμπτη, 30 Μαΐου 2013 14:02
Έχοντας κάνει το Android tablet μας να .. φτιάχνει καφέ, φτάνουμε στο 12ο μέρος της κατασκευής του Android Smart Home.
Σήμερα λοιπόν, θα δούμε πώς μπορούμε να προσθέσουμε κάμερα ασφαλείας στο έξυπνο σπίτι μας, από την οποία θα παίρνουμε εικόνα στην Android εφαρμογή μας, την οποία θα παραμετροποιήσουμε αναλόγως!
Κάμερα ασφαλείας και η Android εφαρμογή μας
Μία καλή λύση για κάμερα ασφαλείας στο σπίτι μας, την οποία θα μπορούμε να την ελέγξουμε από το Android, είναι μία IP Camera. Οι ενσύρματες λύσεις (που συνδέονται με καλώδιο ethernet στο router) αρχίζουν από 20 ευρώ, ενώ οι ασύρματες ξεκινάνε από τα 50.
Παρ' όλα αυτά, εμείς, μιας και είχαμε παλιές Android συσκευές παρατημένες σε αχρηστία, είπαμε να τις χρησιμοποιήσουμε αυτές για IP Cameras! Γενικότερα με τις Android συσκευές να ξεκινάνε από λιγότερα από 70 ευρώ, είναι μία "καλή" λύση για αυτή την χρήση!
Ορίστε τι θα καταφέρουμε:
Χρησιμοποιώντας Android συσκευές ως Security Cameras
Κατεβάζουμε στην (παλιά) Android συσκευή μας την εφαρμογή IP Webcam, και ξεκινάμε τον Server, όπου σημειώνουμε την IP στην οποία τρέχει.
Στην συνέχεια τοποθετούμε την συσκευή σε "κρυφό" σημείο, στο οποίο όμως να υπάρχει και τροφοδοσία.
Παραμετροποιούμε την δική μας Android εφαρμογή
Την Android εφαρμογή που έχουμε φτιάξει, αρκεί να την παραμετροποιήσουμε με τέτοιο τρόπο ώστε το WebView να "βλέπει" στις IP που τρέχουν οι Servers.
Επ' ευκαιρία, μιας και μπορεί να έχουμε περισσότερες από μία ip cameras, θα δώσουμε στην εφαρμογή την δυνατότητα να τις "βλέπει" όλες.
Ο πιο εύκολος τρόπος είναι μέσω του ίδιου του WebView και του jquery mobile να εμφανίσουμε την λίστα με τις επιλογές. Πιο συγκεκριμένα θα αλλάξουμε την java μας ώστε να βλέπει μέσα στα assets:
package com.sql.greekapp; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.view.KeyEvent; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.sql.greekapp.R; public class GreekNewsActivity extends Activity { WebView webview; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); webview = (WebView) findViewById(R.id.web_engine); webview.setWebViewClient(new HelloWebViewClient()); webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setPluginsEnabled(true); //depriciated if (Integer.parseInt(Build.VERSION.SDK) >= Build.VERSION_CODES.FROYO) webview.getSettings().setPluginState(WebSettings.PluginState.ON); webview.getSettings().setAllowFileAccess(true); webview.getSettings().setBuiltInZoomControls(true); //multitouch an ipostirizetai webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); //webview.loadUrl("http://google.com"); //gia debug webview.loadUrl("file:///android_asset/content/a.html"); //update na vlepei sta assets final Activity MyActivity = this; webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { //Na svisw tin mpara afou fortwsei to url MyActivity.setTitle("Φόρτωση..."); MyActivity.setProgress(progress * 100); //svisimo // Kai na emfanisw to app name if(progress == 100) MyActivity.setTitle(R.string.app_name); } }); } //Na krataw ta clicks within the app private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); return true; } return super.onKeyDown(keyCode, event); } }
Τα assets που χρησιμοποιήσαμε σας τα δίνουμε εδώ, κατεβάστε τα και αντικαταστήστε τα στο project σας.
Download Smart Home App Assets
Αυτά περιλαμβάνουν όλες τις εικόνες, αλλά και τις στατικές λίστες/μενού της εφαρμογής μας, η οποία θα γίνει ως εξής:
Βεβαιωθείτε ότι θα αλλάξετε μέσα στα assets την/τις IP στην οποία τρέχουν οι Servers από τις IP Cameras, εμείς έχουμε βάλει τα δικά μας, αλλά αλλάζουν από δίκτυο σε δίκτυο.
Η εφαρμογή μας θα γίνει πλέον ως εξής:
Επιλέγοντας μία από αυτές τις κάμερες, εμφανίζουμε το live feed τους στην εφαρμογή μας! Για πρόσβαση όταν είμαστε εκτός σπιτιού απαιτείται να κάνουμε port forwaring. Αν έχουμε δυναμική IP απαιτείται και να χρησιμοποιήσουμε DynDNS στο router.
Κάντε Like το GreeceAndroid.gr στο Facebook!
Γίνετε μέλος της Ελληνική Κοινότητας του Android στο G+