1、图一是最后的图,图二只是演示可以画出正弦波,其中按钮开启蓝牙是直接默认连接一个设备,按钮sin是开始接受蓝牙数据并画图,图示中由于没有开蓝牙,故一直接收数据一直为0 所以是画出的一条直线,关于清除,是因为在画布下方还有一个TextView空间使用来显示接受到的数据的。 图一 图二关于程序:其中的注释我已经写的很清楚在manifest中,添加蓝牙权限: android.permission.BLUETOOTH_ADMIN/manifest在main.xml:?xml version=1.0 encoding=utf-8LinearLayout xmlns:android= android:lay
2、out_width=fill_parentlayout_height=orientation=vertical TextViewwrap_contenttext=string/helloLinearLayout android:horizontalButton id=+id/buttonstring/button SurfaceView +id/showTextView +id/myviewstring/myview /在strings.xml:resourcesstring name=helloHello World, OscilloscopeActivity!/stringapp_name
3、Oscilloscopebutton开启蓝牙myview参数显示:sinsinbuttonstart搜索buttonselect选择设备buttonsend发送inputplease inputclear清除在Oscilloscope.javapackage com.ways;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Iterator;import java.util.Set;import java.util.Timer;import ja
4、va.util.TimerTask;import java.util.UUID;import android.app.Activity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothSocket;import android.content.Intent;import android.graphics.Canvas;import android.graphics.Color;import android.gr
5、aphics.Paint;import android.graphics.Rect;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.MenuItem;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.view.SurfaceHolder.Ca
6、llback;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class Oscilloscope extends Activity /* Called when the activity is first created. */ final int HEIGHT=320; /设置画图范围高度 final int WIDTH=450; /画图范围宽度 final int X_OFFSET = 5; /x轴(原点)起始位置偏移画图
7、范围一点 private int cx = X_OFFSET; /实时x的坐标 int centerY = HEIGHT /2; /y轴的位置 TextView myview = null; /画布下方显示获取数据的地方 final UUID uuid = UUID.fromString(00001101-0000-1000-8000-00805F9B34FB); /uuid 此为单片机蓝牙模块用 /还有其他的uuid,这个可以再XX查到,暂不清楚其中的差别 final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefau
8、ltAdapter(); /获取本手机的蓝牙适配器 static int REQUEST_ENABLE_BT = 1; / 一个常量而已,开启蓝牙时使用 BluetoothSocket socket = null; /用于数据传输的socket int READ = 1; /一个常量,用于传输数据消息队列的识别字 public ConnectedThread thread = null; /连接蓝牙设备线程 static int temp = 0; /临时变量用于保存接收到的数据 private SurfaceHolder holder = null; /画图使用,可以控制一个SurfaceV
9、iew private Paint paint = null; /画笔 SurfaceView surface = null; / Timer timer = new Timer(); /一个时间控制的对象,用于控制实时的x的坐标, /使其递增,类似于示波器从前到后扫描 TimerTask task = null; /时间控制对象的一个任务 /* 关于画图类的几点说明 * SurfaceView 是View的继承类,这个视图里 * 内嵌了一个专门用于绘制的Surface。可以控制这个Surface的格式和尺寸。 * SurfaceView控制这个Surface的绘制位置。 * * 实现过程:继承SurfaceVi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1