Stap 7: De Android App
Nogmaals leren ik niet hoe te maken van de gehele Android App gelijk vanaf het begin. Dus zal ik neem aan dat u de basiskennis hebben van Android App maken.
Ik kan u zeggen het basisidee van de verbindingen gebeurt en het scherm beller.
In de Android app, zal er een knop om te bekijken van de LIVE video streaming uit de webcam. Afgezien van dat, kunt u de optie voor het dempen van de kennisgeving of de roeping net als "Niet storen" uitschakelen.
Ik heb gezegd dat verschillende modules met de voorbeeldcode die u zullen helpen bouwen app. Op het einde, heb ik ook opgenomen de volledige Android projectbestanden enkel voor uw referentie.
Socket verbinding
We zullen de elementaire socketverbinding gebruiken om berichten te verzenden over de apparaten. Hier zal onze smartphone fungeren als een server.
<p>Socket socket = null;<br> DataInputStream dataInputStream = null; DataOutputStream dataOutputStream = null;</p><p> try { serverSocket = new ServerSocket(SocketServerPORT); while (true) { socket = serverSocket.accept(); dataInputStream = new DataInputStream( socket.getInputStream()); </p><p> String messageFromClient = ""; //If no message sent from client, this code will block the program // messageFromClient = dataInputStream.readUTF(); BufferedReader in = new BufferedReader(new InputStreamReader(dataInputStream)); messageFromClient = in.readLine(); /*message += "#" + count + " from " + socket.getInetAddress() + ":" + socket.getPort() + "\n" + "Msg from client: " + messageFromClient + "\n";*/ message = messageFromClient; if(message.equals("ring")){ Intent dialogIntent = new Intent(Server.this, Call.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(dialogIntent); }</p>
In de bovenstaande code dus bericht de tekenreeks van de Intel Edison bestuur ontvangen. Dus als het ontvangt "ring" wordt dan een nieuwe activiteit gestart, die zal leiden tot het aanroepende scherm met de opties om te accepteren en een gesprek beëindigt.
Oproep scherm op de top van het slotscherm
We moeten brengen op het aanroepende scherm, zelfs wanneer de telefoon is vergrendeld. Te doen die de volgende vlaggen bevatten in de Android activiteit.
<p>getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);<br>getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); <br>getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);<br>getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);</p>
Spelen van de Ringtone
Om te spelen de ringtone gebruiken we MediaPlayer klasse.
MediaPlayer mediaPlayer; <p>mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.a); // a is the media file</p><p>mediaPlayer.start(); //start playing the ringtone</p>mediaPlayer.stop(); //stop playing the ringtone
Live Video-Stream
We zullen gebruiken het web weergave om de inhoud van de URL dat we in de vorige stap. Hier is de basic-code:
<p>public class LiveCall extends Activity { WebView web;<br> protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_live_call); web = (WebView) findViewById(R.id.web); web.setWebViewClient(new myWebClient()); web.getSettings().setJavaScriptEnabled(true); web.loadUrl("http://192.168.43.142:8080/flash.html"); web.setBackgroundColor(0); }</p>
Het URL-OT d.w.z. 192.168.43.142 zal eigenlijk uw Intel Edison lokale IP en 8080 is het nummer van de poort. Voer de volledige URL die je in de vorige stap hebt.
Motion detectie kennisgeving
Wanneer er beweging gedetecteerd op de drempel, wordt een bericht verzonden van het bord Intel Edison aan Android app kennisgeving aan deze activiteit. Hier is de code voor kennisgeving samen met een optie om de live view van de videostream weer te geven.
<p>if(message.equals("motion")){<br> String strtitle = getString(R.string.app_name); // Set Notification Text String strtext = "Some one is on door";</p><p> // Open NotificationView Class on Notification Click Intent intent = new Intent(Server.this, LiveCall.class); // Send data to NotificationView Class intent.putExtra("title", strtitle); intent.putExtra("text", strtext); PendingIntent pIntent = PendingIntent.getActivity(Server.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); Vibrator v = (Vibrator)getSystemService(VIBRATOR_SERVICE); // Vibrate for 1 seconds v.vibrate(2000); NotificationCompat.Builder builder = new NotificationCompat.Builder(Server.this) // Set Icon .setSmallIcon(R.drawable.ic_launcher) // Set Ticker Message .setTicker("Door Bell") // Set Title .setContentTitle("Intel Iot Door Bell") // Set Text .setContentText("Someone is at the Door!") // Add an Action Button below Notification .addAction(R.drawable.live, "GO LIVE", pIntent) // Set PendingIntent into Notification .setContentIntent(pIntent) // Dismiss Notification .setAutoCancel(true);</p><p> // Create Notification Manager NotificationManager notificationmanager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // Build Notification with Notification Manager notificationmanager.notify(0, builder.build()); } }</p>
Hier is de tekenreeks van de bericht ontvangen "motion". Na die we creëren een melding weergeven 'Iemand is bij de deur!' samen met een optie om te gaan leven en Bekijk de video-stream.
Dus bijna alle belangrijke aspecten van de Android app vindt u in deze stap. Nu is het laatste ding dat blijven te tellen alle code zodat het lijkt als een systeem als geheel.