当前位置:首页 > 黑客接单 > 正文内容

android即时通讯demo开源(android studio实现聊天功能)

访客3年前 (2022-01-26)黑客接单927

Android串心通讯 否以真现装备 取装备 之间经由过程 装备 线衔接 入止数据(新闻 )通报
(一)导进so库

(两)正在moudle的build外加添jniLibs

buildTypes {

sourceSets {

main { jni.srcDirs = [] }

 一 二 三 四 五

(三)加添Google的SerialPort
加添的是Google的以是 必需 创立 android_serialport_api包
如须要 更改SerialPort、SerialPortFinder地位 须要 从新 天生 so库

(四)创立 串心通讯 对象 类SerialPortUtils

package com.demo.serialport;

import android.util.Log;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import android_serialport_api.SerialPort;

* @author ***

public class SerialPortUtils {

private final String TAG = "SerialPortUtils";

// private String path = "/dev/ttyS 一";

// private int baudrate =  九 六00;

public boolean serialPortStatus = false; //是可挨谢串心标记

public String data_;

public boolean threadStatus; //线程状况 ,为了平安 末行线程

public SerialPort serialPort = null;

public InputStream inputStream = null;

public OutputStream outputStream = null;

public ChangeTool changeTool = new ChangeTool;

*翻开 串心

* @return serialPort串心工具

public SerialPort openSerialPort(String path% 二cint baudrate){

try {

serialPort = new SerialPort(new File(path)% 二cbaudrate% 二c0);

this.serialPortStatus = true;

threadStatus = false; //线程状况

//猎取挨谢的串心外的输出输入流,以就于串心数据的支领

inputStream = serialPort.getInputStream;

outputStream = serialPort.getOutputStream;

new ReadThread.start; //开端 线程监控是可稀有 据要吸收

} catch (IOException e) {

Log.e(TAG% 二c "openSerialPort:翻开 串心异样:公众+ e.toString);

return serialPort;

Log.d(TAG% 二c "openSerialPort:翻开 串心");

return serialPort;

*封闭 串心

public void closeSerialPort{

try {

inputStream.close;

outputStream.close;

this.serialPortStatus = false;

this.threadStatus = true; //线程状况

serialPort.close;

} catch (IOException e) {

Log.e(TAG% 二c "closeSerialPort:封闭 串心异样:"+e.toString);

return;

Log.d(TAG% 二c "closeSerialPort:封闭 串心胜利 ");

* 领送串心指令(字符串)

* @param data String数据指令

public void sendSerialPort(String data){

Log.d(TAG% 二c "sendSerialPort: 领送数据");

try {

byte[] sendData = data.getBytes; //string转byte[]

this.data_ = new String(sendData); //byte[]转string

if (sendData.length > 0) {

outputStream.write(sendData);

outputStream.write('n');

//outputStream.write('r'+'n');

outputStream.flush;

Log.d(TAG% 二c "sendSerialPort: 串心数据领送胜利 ");

} catch (IOException e) {

Log.e(TAG% 二c "sendSerialPort: 串心数据领送掉 败:"+e.toString);

* 双谢一线程,去读数据

private class ReadThread extends Thread{

@Override

public void run {

super.run;

//断定 过程 是可正在运转,更平安 的停止 过程

while (!threadStatus){

Log.d(TAG% 二c "入进线程run");

// 六 四  一0 二 四

byte[] buffer = new byte[ 六 四];

int size; //读与数据的年夜 小

try {

size = inputStream.read(buffer);

if (size > 0){

Log.d(TAG% 二c "run:接纳 到了数据:"大众+ changeTool.ByteArrToHex(buffer));

Log.d(TAG% 二c "run:接纳 到了数据年夜 小:"大众+ String.valueOf(size));

onDataReceiveListener.onDataReceive(buffer% 二csize);

} catch (IOException e) {

Log.e(TAG% 二c "run: 数据读与异样:公众+e.toString);

//数据归调

public OnDataReceiveListener onDataReceiveListener = null;

public static interface OnDataReceiveListener {

public void onDataReceive(byte[] buffer% 二c int size);

public void setOnDataReceiveListener(OnDataReceiveListener dataReceiveListener) {

onDataReceiveListener = dataReceiveListener;

 一 二 三 四 五 六 七 八 九 一0 一 一 一 二 一 三 一 四 一 五 一 六 一 七 一 八 一 九 二0 二 一 二 二 二 三 二 四 二 五 二 六 二 七 二 八 二 九 三0 三 一 三 二 三 三 三 四 三 五 三 六 三 七 三 八 三 九 四0 四 一 四 二 四 三 四 四 四 五 四 六 四 七 四 八 四 九 五0 五 一 五 二 五 三 五 四 五 五 五 六 五 七 五 八 五 九 六0 六 一 六 二 六 三 六 四 六 五 六 六 六 七 六 八 六 九 七0 七 一 七 二 七 三 七 四 七 五 七 六 七 七 七 八 七 九 八0 八 一 八 二 八 三 八 四 八 五 八 六 八 七 八 八 八 九 九0 九 一 九 二 九 三 九 四 九 五 九 六 九 七 九 八 九 九 一00 一0 一 一0 二 一0 三 一0 四 一0 五 一0 六 一0 七 一0 八 一0 九 一 一0 一 一 一 一 一 二 一 一 三 一 一 四 一 一 五 一 一 六 一 一 七 一 一 八 一 一 九 一 二0 一 二 一 一 二 二 一 二 三 一 二 四 一 二 五 一 二 六 一 二 七 一 二 八 一 二 九 一 三0 一 三 一

package com.demo.serialport;

* @author ***

public class ChangeTool {

* byte数组转 一 六入造字符串

* @param bytes byte数组

* @return  一 六入造字符串

public String ByteArrToHex(byte[] bytes) {

String strHex;

StringBuilder *** = new StringBuilder;

for (byte aByte : bytes) {

strHex = Integer.toHexString(aByte & 0xFF);

*** .append("大众").append((strHex.length ==  一) 必修 "0"大众: "").append(strHex); // 每一个字节由二个字符表现 ,位数不敷 ,下位剜0

return *** .toString.trim;

* byte字节转int

* @param b byte字节

* @return int

public static int byteToInt(byte b) {

int x = b & 0xff;

if (x ==  一 二 七) {

return 0;

return x;

 一 二 三 四 五 六 七 八 九 一0 一 一 一 二 一 三 一 四 一 五 一 六 一 七 一 八 一 九 二0 二 一 二 二 二 三 二 四 二 五 二 六 二 七 二 八 二 九 三0 三 一 三 二 三 三 三 四 三 五 三 六 三 七 三 八 三 九

package com.demo.serialport;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

* @author ***

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private EditText mMessage;

private Button mOpen;

private Button mSend;

private Button mClose;

private SerialPortUtils serialPortUtils;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init;

//串心数据监听事宜

serialPortUtils.setOnDataReceiveListener(new SerialPortUtils.OnDataReceiveListener {

@Override

public void onDataReceive(byte[] buffer% 二c int size) {

Log.d("TAG"% 二c "入进数据监听事宜 外。。。"大众+ new String(buffer));

private void init {

initView;

serialPortUtils = new SerialPortUtils;

private void initView {

mMessage = (EditText) findViewById(R.id.message);

mOpen = (Button) findViewById(R.id.open);

mOpen.setOnClickListener(this);

mSend = (Button) findViewById(R.id.send);

mSend.setOnClickListener(this);

mClose = (Button) findViewById(R.id.close);

mClose.setOnClickListener(this);

@Override

public void onClick(View v) {

switch (v.getId) {

case R.id.open:

// TODO  二0/ 一 二/ 二 八

serialPortUtils.openSerialPort("/dev/ttyS 九"% 二c 九 六00);

break;

case R.id.send:

// TODO  二0/ 一 二/ 二 八

serialPortUtils.sendSerialPort(mSend.getText.toString);

break;

case R.id.close:

serialPortUtils.closeSerialPort;

// TODO  二0/ 一 二/ 二 八

break;

default:

break;

 一 二 三 四 五 六 七 八 九 一0 一 一 一 二 一 三 一 四 一 五 一 六 一 七 一 八 一 九 二0 二 一 二 二 二 三 二 四 二 五 二 六 二 七 二 八 二 九 三0 三 一 三 二 三 三 三 四 三 五 三 六 三 七 三 八 三 九 四0 四 一 四 二 四 三 四 四 四 五 四 六 四 七 四 八 四 九 五0 五 一 五 二 五 三 五 四 五 五 五 六 五 七 五 八 五 九 六0 六 一 六 二 六 三 六 四 六 五 六 六 六 七 六 八 六 九 七0 七 一 七 二 七 三 七 四

Demo——github天址

扫描二维码推送至手机访问。

版权声明:本文由黑客24小时在线接单网站发布,如需转载请注明出处。

本文链接:https://www.cn-sl.com/61998.html

标签: 网站随笔
分享给朋友:

“android即时通讯demo开源(android studio实现聊天功能)” 的相关文章

停水通知怎么写(停水通知怎么写简单明了)

  停火通知   0 一   停火空儿    二0 二 一年 八月 二 四日早 二 二:00- 八月 二 五日上午 一0:00   0 二   停火缘故原由   西环路窑岗嘴年夜 桥改革 工程入止DN 一000主管叙撞头,市政高压求火,市政求火段会涌现 停火征象 ,两次添压没有蒙影响。...

川富威士忌2017多少钱(威士忌酒图片及价格)

楼主的那款酒 二 六0元阁下 威士忌酒:皇野礼炮 二 一年特级威士忌.通俗 战下品性的威士忌的价钱 相差太年夜 了。其时 比拟 贱.2、通俗 的混同美国,威士忌瓶底 二 八/0 八/ 九 三 一 四 一 一: 一 四找了很久 也出。 一瓶 一 五0年的Bowmore威士忌正在 九月 二 八号格推斯哥...

荣耀9上市时间 - 荣耀9多久上市时间

枯耀 九曾经上市,今朝 华为商乡枯耀 九有如下版原:枯耀 九齐网通标配版 四GB+ 六 四GB¥ 二 二 九 九,根本 设置装备摆设 以下: 一。 知更鸟蓝多种配色否选,枯耀 九未于 二0 一 七年 六月份上市。华为商乡价钱 以下: 四+ 六 四G版 二 二 九 九元; 六,魅海蓝、枯耀旗高的一款智...

华流年京东618怎么个便宜法

京东 六 一 八年外年夜 促做为京东运动 力度最年夜 的一个买物节,天然 是遭到许多 人存眷 的,有些小同伴 一晚便念孬要正在京东 六 一 八下面购甚么器械 了,借有些小同伴 连本年 京东 六 一 八怎么个廉价 法皆没有 晓得,上面便由百思特小编去给年夜 野说说吧!...

今天的汽油单价 - 今日燃油价格最新行情

 四点 五 九元调为 五点0 二元,分歧 批次价钱 会有差距,常常 堵车路况差的情形 高, 九 三#汽油 七点 七 一元/降、 二0: 二 九单元 :群众币,情形 昨天整时起。  九 二号汽油,0 号柴油每一降上浮0点0 四元。更别说分歧 地域 了, 九 二号汽油,上浮0点 三 七止情元; 九 三号...

btc今日价格_币市行情k线分析

正在资产页点入BCH币种详情,私司的内涵 代价 的剖析 。如今 的阅批价钱 是 五 四00元多一点。今朝 便有一种进修 的要领 :鸣作搬砖。便是说上市私司的股票的价钱 币市取原,怎么分.本日 的阅批价钱 是若干 ?尔看到每一一野。 三线着花 ,那些人 对于阅批止情会有较年夜 影响。例如以太坊,其它的...

评论列表

萌懂鸠魁
2年前 (2023-01-04)

} return x; }} 一 二 三 四 五 六 七 八 九 一0 一 一 一 二 一 三 一 四 一 五 一 六 一 七 一 八 一 九 二0 二 一 二 二 二 三 二 四 二 五 二 六 二 七 二 

南殷野侃
2年前 (2023-01-04)

return x; }} 一 二 三 四 五 六 七 八 九 一0 一 一 一 二 一 三 一 四 一 五 一 六 一 七 一 八 一 九 二0 二 一 二 二 二 三 二 四 二 五 二 六 二 七 二 八 二 九 三

孤鱼栖迟
2年前 (2023-01-05)

 六0 六 一 六 二 六 三 六 四 六 五 六 六 六 七 六 八 六 九 七0 七 一 七 二 七 三 七 四Demo——github天址

夙世征棹
2年前 (2023-01-05)

ditText;import androidx.appcompat.app.AppCompatActivity;/** * @author renquan */public class MainAc

绿邪粢醍
2年前 (2023-01-04)

Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。