1. 程式人生 > >基於DragonBoard 410c的遠端家居監控平臺五之客戶端顯示(中)

基於DragonBoard 410c的遠端家居監控平臺五之客戶端顯示(中)

package com.boss.xiao.Ideas;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;


public class MySurfaceView extends SurfaceView 
   implements Callback, Runnable
     {
	    private SurfaceHolder sfh;  
	    private Canvas canvas;  
	    URL videoUrl;
	    private String url;
	    HttpURLConnection conn;
	    Bitmap bmp;
	    private Paint p;      
	    InputStream inputstream=null;
	    private Bitmap mBitmap;    
	    private static int mScreenWidth; 
	    private static int mScreenHeight;
        float myEyesDistance;
        int numberOfFaceDetected;
        Paint myPaint = new Paint();
        
	    public MySurfaceView(Context context, AttributeSet attrs) 
	    {

	    	  super(context, attrs);
	    	  initialize();
	    	  p = new Paint();
	    	  p.setAntiAlias(true);
	    	  myPaint.setColor(Color.GREEN);
	    	  myPaint.setStyle(Paint.Style.STROKE);
	    	  myPaint.setStrokeWidth(3);
	             
	    	  sfh = this.getHolder();
	    	  sfh.addCallback(this);
	    	  this.setKeepScreenOn(true);
	    	  setFocusable(true);
	    	  this.getWidth();
	    	  this.getHeight();  
	     }

	     private void initialize() 
	     { 
	    	  DisplayMetrics dm = new  DisplayMetrics();     
	    	  dm = getResources().getDisplayMetrics();
	    	  mScreenWidth = dm.widthPixels; 
	    	  mScreenHeight = dm.heightPixels;                  
	     } 
	    	 class DrawVideo extends Thread
	    	 {
	    	  
	    	    public DrawVideo() {}     
	    	    public void run() 
	    	    {
	    		     while (true)
	    		     {
		    		     try {  
		    		    	 	videoUrl=new URL(url);
		    		    	 	conn = (HttpURLConnection)videoUrl.openConnection();
		    		    	 	conn.connect();
		    		    	 	inputstream = conn.getInputStream(); //獲取流
		    		    	 	BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
		    		            BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
		    		            bmp = BitmapFactory.decodeStream(inputstream,null,BitmapFactoryOptionsbfo);//從獲取的流中構建出BMP影象
		    		            mBitmap = Bitmap.createScaledBitmap(bmp, mScreenWidth, mScreenHeight, true);
		    		            canvas = sfh.lockCanvas();
		    		            canvas.drawColor(Color.WHITE);
		    		            canvas.drawBitmap(mBitmap, 0,0, null);//把BMP影象畫在畫布上
		    		            sfh.unlockCanvasAndPost(canvas);//畫完一副影象,解鎖畫布 
		    		            
		    		         } catch (Exception ex) { 
		    		        	 ex.printStackTrace();
		    		         } finally {}   
	    		     }
	    		 }
	 
	    	 }    
	    	 public void surfaceChanged(SurfaceHolder holder, int format, int width,    
	            int height){}    
	         public void surfaceDestroyed(SurfaceHolder holder){} 
	       
	         public void GetCameraIP(String p){url=p; Log.e("GetCameraIP ="+p,"xiao");}

	         public void run() {
		     while (true)
		     {
			     try {  
			    	 	Log.e("DrawVideo ============","xiao");
			    	    videoUrl=new URL(url);
			         	conn = (HttpURLConnection)videoUrl.openConnection();
			         	conn.connect();
			         	inputstream = conn.getInputStream(); //獲取流
			         	bmp = BitmapFactory.decodeStream(inputstream);//從獲取的流中構建出BMP影象
			         	mBitmap = Bitmap.createScaledBitmap(bmp, mScreenWidth, mScreenHeight, true);
			            canvas = sfh.lockCanvas();
			            canvas.drawColor(Color.WHITE);
			            canvas.drawBitmap(mBitmap, 0,0, null);//把BMP影象畫在畫布上
			            sfh.unlockCanvasAndPost(canvas);//畫完一副影象,解鎖畫布 
			         } 
			     	 catch (Exception ex) 
			         { 
			          ex.printStackTrace();
			         } 
			     	 finally 
			         {  
			    	 
			         }   
		     }
		 }

			    public void surfaceCreated(SurfaceHolder holder) 
				{
					new DrawVideo().start();	
				}
	       
			    public void drowblack(){}
	}    

相關推薦

基於DragonBoard 410c遠端家居監控平臺客戶顯示()

package com.boss.xiao.Ideas; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.content.Context; import an

基於dragonboard 410c的智慧魔鏡設計(4)——視訊訊息檢索及自動播放

      前面給大家介紹瞭如何自動的檢索指定使用者的文字訊息,並且採用html模板方式在qt控制元件上自動迴圈的播放文字訊息,但是在智慧魔鏡中我們還可以向指定使用者推送視訊訊息,實時顯示視訊訊息,這裡進一步向大家介紹如何在基於dragonboard 410c的智慧魔鏡上實

基於DragonBoard 410c的家庭智慧環保衛士——(13)融合多資料處理的運動控制

              在獲取環境資料和地圖路徑規劃資訊後,就可以根據這些資料來實現對家庭環保衛士底盤的控制,本期blog將向大家介紹如何實現對家庭環保機器人的智慧控制,這裡控制過程中主要是從資料庫中搜索得到網格地圖位置中的環境資訊,然後根據環境資訊進行決策,最終根據決

基於DragonBoard 410c的家庭智慧環保衛士——(12)環境資料融合

      前面方案已經介紹了家庭智慧環保衛士需要採集各種環境資料,但是在具體處理中,我們需要進一步對環境資料進行融合處理,以得到一個可以引導機器人運動的環境資料指標,本節blog將向大家介紹如何進行環境資料融合,最終計算得到一個綜合性的指標。       本文在評價過程中

基於DragonBoard 410c的家庭智慧環保衛士——(7)室內柵格地圖位置更新

       在前面http://blog.csdn.net/andymfc/article/details/60955819中我們對整體的室內路徑規劃思想進行了簡單介紹,其關鍵將室內劃分為柵格地圖,通過設定引導位置,然後採用路徑搜尋演算法查詢機器到引導位置的路徑,但是如何

基於Tornado搭建Raspberry Pi監控平臺

在《Tornado - 基於Python的Web伺服器框架》講到一個性能很不錯的python的web伺服器框架tornado,現在就使用它在樹莓派開發板上搭建一個簡單地監控開發板狀態網站。 這裡先給出這個小專案的檔案目錄總體結構: hardware資料夾是對開發板進行操作

基於Prometheus和Grafana的監控平臺 - 環境搭建

相關概念 微服務中的監控分根據作用領域分為三大類,Logging,Tracing,Metrics。 Logging - 用於記錄離散的事件。例如,應用程式的除錯資訊或錯誤資訊。它是我們診斷問題的依據。比如我們說的ELK就是基於Logging。 Metrics - 用於記錄可聚合的資料。例如,佇列的當前深度可

基於Prometheus和Grafana的監控平臺 - 運維告警

通過前面幾篇文章我們搭建好了監控環境並且監控了伺服器、資料庫、應用,運維人員可以實時瞭解當前被監控物件的執行情況,但是他們不可能時時坐在電腦邊上盯著DashBoard,這就需要一個告警功能,當伺服器或應用指標異常時傳送告警,通過郵件或者簡訊的形式告訴運維人員及時處理。 今天我們就來聊聊 基於Prometheu

Java Socket應用(基於UDP的Socket通訊客戶

UDPClient.java package com.yijia; import java.io.IOException; import java.net.*; /** * 建立時間:2018/10/4 15:44 * 作者: * 郵箱:[email p

基於Mask rcnn的行人檢測與安卓客戶的移動監控系統

一. Mask rcnn簡述 Mask rcnn是何凱明基於以往的faster rcnn架構提出的新的卷積網路,一舉完成了object instance segmentation. 該方法在有效地目標的同時完成了高質量的語義分割。 文章的主要思路就是把原有的Faster-R

遠端服務HttpInvoker原始碼解析(客戶實現

客戶端實現 分析了服務端的解析以及處理後,我們接下來分析客戶端的呼叫過程,在服務端呼叫的分析中我們反覆提到需要從HttpServletRequest中提取從客戶端傳來的RemoteInvocation例項,然後進行相應解析。所以客戶端,一個比較重要的任務就是構建Remote

Spring Cloud Config教程(客戶使用

home 本地 snap 遠程 html local nap parent path 要在應用程序中使用這些功能,只需將其構建為依賴於spring-cloud-config-client的Spring引導應用程序(例如,查看配置客戶端或示例應用程序的測試用例)。添加依賴關

CAS(四)基於Springboot搭建CAS-client,Springboot搭建CAS客戶

環境要求 JDK 8+ CAS 5.2 tomcat 8+ 步驟 一、搭建CAS伺服器  --> CAS(一)搭建CAS - server伺服器   二、配置hosts,加入如下配置 127.0.0.1

CAS(三)基於SpringMVC搭建CAS-client,SpringMVC搭建CAS客戶

環境要求 JDK 8+ CAS 5.2 tomcat 8+ 步驟 一、搭建CAS伺服器  --> CAS(一)搭建CAS - server伺服器   二、配置hosts,加入如下配置 127.0.0.1

[原始碼和報告分享] C#實現的基於SMTP協議的E-MAIL電子郵件傳送客戶軟體

利用SMTP和Pop協議從底層開發了這個軟體。SMTP全稱是簡單郵件傳輸協議,它專門用來發送郵件用的。Pop全稱是郵局協議,是專門用於接收郵件的。我主要是負責如何實現傳送郵件功能的。MailSend名稱空間是我整個程式的核心。它包括兩個類。在SmtpMail的類中包含了一個SendMail的方法,它

基於springMVC+AJAX+bootstraptable實現上傳檔案和客戶分頁

1 首先看一下上傳表格程式碼,主要程式碼如下: <form method="post" enctype="multipart/form-data" id="orderform"> <div class="col-md-6 col-sm-12"&

struts框架問題向值棧儲存資料

5. 問題五: 向值棧儲存資料 (主要針對root棧) > valueStack.push(Object obj); * push方法的底層呼叫root物件的push方法(把元素新增到0位置) > valueStack.set(String key, Object

Git for Windows 2.20.1 釋出,Windows 平臺的 Git 客戶

   Git for Windows 2.20.1 釋出了,Git for Windows 是一個 Windows 版的 Git 客戶端,它提供輕量級的本地工具集,將 Git SCM 的完整功能集引入Windows,同時提供了 GUI。 該版本的新特性包括: 升級至&nbs

Redis叢集監控及Redis桌面客戶

之前在生產環境部署了Redis叢集,一直苦於沒有工具監控,最近找了下網上推薦redmon和Redislive的比較多,查看了兩個專案的github,都幾年沒有更新,這兩個專案應該沒有人在維護了,如果哪位有更好的替代方案麻煩告知! 僅將自己的部署方案貼出來,以供自己翻查! 具

Netty實戰 IM即時通訊系統(客戶啟動流程

## Netty實戰 IM即時通訊系統(五)客戶端啟動流程 零、 目錄 IM系統簡介 Netty 簡介 Netty 環境配置 服務端啟動流程 實戰: 客戶端和服務端雙向通訊 資料傳輸載體ByteBuf介紹 客