基于android studio3.0编写的蓝牙串口助手

(Android Studio)Android 手机设备与HC05 蓝牙设备的通信(成功案例+源码)
代码我忘了在哪找的,只记得是把别人网上的代码稍微整理了一下,之后再加上自己的一些东西就成功了,对,反正就是成功了。很感谢我的一个哥们帮我组建了单片机和蓝牙设备硬件方面的东西,服务器那边也是他写的,灰常感谢...在上次的博客中写的手机设备向蓝牙设备中发送消息,代码很乱不是很容易整理,这次我会把源码的地址放到文末,大家可以测试一下。一,Android 手机蓝牙 与 Android 手机蓝牙
从网上抠下来的那个代码,在一个APP中写了接受和发送,也就是说,两部手机用一个APP就可以通信,
很清楚的看到,两个手机一个APP,在未连接之下点击目标蓝牙会先配对,配对成功之后就可相互发送消息了。二,Android 手机蓝牙向HC05设备发送数据在这里之前有一个问题导致APP无法使用,最后看到有博客这样写,我是这样理解的,你的目标设备可以分几类,每一类又有几个专门的UUID,使得匹配,差不多就是这个意思。最后也成功了,也是用这个APK ,那接受的部分就交给我哥们了,啊哈哈哈.下载地址:https://download.csdn.net/download/h2677lucy/layout_buletooth_seacher.xml&RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"&
&LinearLayout
android:id="@+id/l1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical"&
android:id="@+id/lvDevices"
android:layout_width="match_parent"
android:layout_height="250dp" /&
android:id="@+id/text_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="[CURRENT ORDER]"
android:textSize="18sp" /&
android:id="@+id/receive_text"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#EEEEEE"
android:gravity="center"
android:textSize="20dp" /&
&/LinearLayout&
&LinearLayout
android:layout_below="@id/l1"
android:id="@+id/l2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="3"&
&LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"&
android:id="@+id/red"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:text="红灯"
android:textSize="10dp" /&
android:id="@+id/green"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="10dp"
android:layout_weight="1"
android:text="绿灯"/&
android:id="@+id/blue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="10dp"
android:layout_weight="1"
android:text="蓝灯" /&
android:id="@+id/breath"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="10dp"
android:layout_weight="1"
android:text="呼吸灯" /&
android:id="@+id/close_all_led"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="10dp"
android:layout_weight="1"
android:text="关灯" /&
&/LinearLayout&
&LinearLayout
android:layout_width="match_parent"
android:padding="5dp"
android:layout_height="50dp"&
android:id="@+id/textView"
android:layout_width="50dp"
android:layout_height="match_parent"
android:gravity="center"
android:background="#"
android:text="亮度" /&
android:id="@+id/seekBar"
style="@style/AlertDialog.AppCompat.Light"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:max="800"
android:background="#"
android:progress="50" /&
&/LinearLayout&
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClick_Search"
android:text="搜索" /&
&/LinearLayout&
&LinearLayout
android:layout_below="@id/l2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/text_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="[RECEIVE ORDER]"
android:textSize="18sp" /&
android:id="@+id/msg"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#EEEEEE"
android:gravity="center"
android:textSize="20dp" /&
&/LinearLayout&
&/RelativeLayout&BuletoothClientActivitypackage com.managesoft.nullchen.
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import java.util.ArrayL
import java.util.L
import java.util.S
import java.util.UUID;
import android.graphics.C
import android.os.B
import android.os.H
import android.os.M
import android.app.A
import android.bluetooth.BluetoothA
import android.bluetooth.BluetoothD
import android.bluetooth.BluetoothServerS
import android.bluetooth.BluetoothS
import android.content.BroadcastR
import android.content.C
import android.content.I
import android.content.IntentF
import android.util.L
import android.view.V
import android.widget.AdapterV
import android.widget.AdapterView.OnItemClickL
import android.widget.ArrayA
import android.widget.B
import android.widget.ListV
import android.widget.SeekB
import android.widget.TextV
import android.widget.T
public class BuletoothClientActivity extends Activity implements OnItemClickListener{
// 获取到蓝牙适配器
private BluetoothAdapter mBluetoothA
// 用来保存搜索到的设备信息
private List&String& bluetoothDevices = new ArrayList&String&();
// ListView组件
private ListView lvD
// ListView的字符串数组适配器
private ArrayAdapter&String& arrayA
// UUID,蓝牙建立链接需要的
private final UUID MY_UUID = UUID
.fromString("0-805F9B34FB");
// 为其链接创建一个名称
private final String NAME = "Bluetooth_Socket";
// 选中发送数据的蓝牙设备,全局变量,否则连接在方法执行完就结束了
private BluetoothDevice selectD
// 获取到选中设备的客户端串口,全局变量,否则连接在方法执行完就结束了
private BluetoothSocket clientS
// 获取到向设备写的输出流,全局变量,否则连接在方法执行完就结束了
private OutputS
// 服务端利用线程不断接受客户端信息
private AcceptT
//定义按钮
//定义按钮
private Button close_all_
private Button red1 =
private Button green1 =
private Button blue1 =
private Button breath =
private TextView receive1;
private SeekBar seekB
private String LED_STATE = "A 红灯亮";
private TextView re_
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_buletooth_seacher);
red1 = (Button)findViewById(R.id.red);
green1 = (Button)findViewById(R.id.green);
blue1 = (Button)findViewById(R.id.blue);
receive1 = (TextView)findViewById(R.id.receive_text);
close_all_led = (Button)findViewById(R.id.close_all_led);
breath = (Button)findViewById(R.id.breath);
seekBar = (SeekBar)findViewById(R.id.seekBar);
re_msg = (TextView)findViewById(R.id.msg);
red1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
LED_STATE = "R";
receive1.setText(LED_STATE);
green1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
LED_STATE = "G";
receive1.setText(LED_STATE);
blue1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
LED_STATE = "B";
receive1.setText(LED_STATE);
close_all_led.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
LED_STATE = "E";
receive1.setText(LED_STATE);
breath.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
LED_STATE = "H";
receive1.setText(LED_STATE);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
LED_STATE ="{0:"+i+"}";
receive1.setText(LED_STATE);
public void onStartTrackingTouch(SeekBar seekBar) {
public void onStopTrackingTouch(SeekBar seekBar) {
// 获取到蓝牙默认的适配器
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// 获取到ListView组件
lvDevices = (ListView) findViewById(R.id.lvDevices);
// 为listview设置字符换数组适配器
arrayAdapter = new ArrayAdapter&String&(this,
android.R.layout.simple_list_item_1, android.R.id.text1,
bluetoothDevices);
// 为listView绑定适配器
lvDevices.setAdapter(arrayAdapter);
// 为listView设置item点击事件侦听
lvDevices.setOnItemClickListener(this);
// 用Set集合保持已绑定的设备
将绑定的设备添加到Set集合。
Set&BluetoothDevice& devices = mBluetoothAdapter.getBondedDevices();
if (devices.size() & 0) {
for (BluetoothDevice bluetoothDevice : devices) {
// 保存到arrayList集合中
bluetoothDevices.add(bluetoothDevice.getName() + ":"
+ bluetoothDevice.getAddress() + "\n");
// 因为蓝牙搜索到设备和完成搜索都是通过广播来告诉其他应用的
// 这里注册找到设备和完成搜索广播
IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(receiver, filter);
filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
// 实例接收客户端传过来的数据线程
thread = new AcceptThread();
// 线程开始
thread.start();
//搜索蓝牙设备
public void onClick_Search(View view) {
setTitle("正在扫描...");
// 点击搜索周边设备,如果正在搜索,则暂停搜索
if (mBluetoothAdapter.isDiscovering()) {
mBluetoothAdapter.cancelDiscovery();
mBluetoothAdapter.startDiscovery();
// 注册广播接收者
private BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context arg0, Intent intent) {
// 获取到广播的action
String action = intent.getAction();
// 判断广播是搜索到设备还是搜索完成
if (action.equals(BluetoothDevice.ACTION_FOUND)) {
// 找到设备后获取其设备
BluetoothDevice device = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// 判断这个设备是否是之前已经绑定过了,如果是则不需要添加,在程序初始化的时候已经添加了
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
// 设备没有绑定过,则将其保持到arrayList集合中
bluetoothDevices.add(device.getName() + ":"
+ device.getAddress() + "\n");
// 更新字符串数组适配器,将内容显示在listView中
arrayAdapter.notifyDataSetChanged();
} else if (action
.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
setTitle("搜索完成");
// 点击listView中的设备,传送数据
public void onItemClick(AdapterView&?& parent, View view, int position,
long id) {
// 获取到这个设备的信息
String s = arrayAdapter.getItem(position);
// 对其进行分割,获取到这个设备的地址
String address = s.substring(s.indexOf(":") + 1).trim();
Log.d("TAG",address);
// 判断当前是否还是正在搜索周边设备,如果是则暂停搜索
if (mBluetoothAdapter.isDiscovering()) {
mBluetoothAdapter.cancelDiscovery();
// 如果选择设备为空则代表还没有选择设备
if (selectDevice == null) {
//通过地址获取到该设备
selectDevice = mBluetoothAdapter.getRemoteDevice(address);
// 这里需要try catch一下,以防异常抛出
// 判断客户端接口是否为空
if (clientSocket == null) {
// 获取到客户端接口
clientSocket = selectDevice
.createRfcommSocketToServiceRecord(MY_UUID);
// 向服务端发送连接
clientSocket.connect();
// 获取到输出流,向外写数据
os = clientSocket.getOutputStream();
// 判断是否拿到输出流
if (os != null) {
// 需要发送的信息
//String text = "我传过去了";
// 以utf-8的格式发送出去
os.write(LED_STATE.getBytes("UTF-8"));
// 吐司一下,告诉用户发送成功
Toast.makeText(this, "发送信息成功,请查收", 0).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// 如果发生异常则告诉用户发送失败
Toast.makeText(this, "发送信息失败", 0).show();
// 创建handler,因为我们接收是采用线程来接收的,在线程中无法操作UI,所以需要handler
Handler handler = new Handler() {
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
// 通过msg传递过来的信息,吐司一下收到的信息
// Toast.makeText(BuletoothClientActivity.this, (String) msg.obj, Toast.LENGTH_SHORT).show();
re_msg.setText((String)msg.obj);
// 服务端接收信息线程
private class AcceptThread extends Thread {
private BluetoothServerSocket serverS// 服务端接口
private BluetoothS// 获取到客户端的接口
private InputS// 获取到输入流
private OutputS// 获取到输出流
public AcceptThread() {
// 通过UUID监听请求,然后获取到对应的服务端接口
serverSocket = mBluetoothAdapter
.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
} catch (Exception e) {
e.printStackTrace();
public void run() {
// 接收其客户端的接口
socket = serverSocket.accept();
// 获取到输入流
is = socket.getInputStream();
// 获取到输出流
os = socket.getOutputStream();
// 无线循环来接收数据
while (true) {
// 创建一个128字节的缓冲
byte[] buffer = new byte[128];
// 每次读取128字节,并保存其读取的角标
int count = is.read(buffer);
// 创建Message类,向handler发送数据
Message msg = new Message();
// 发送一个String的数据,让他向上转型为obj类型
msg.obj = new String(buffer, 0, count, "utf-8");
// 发送数据
handler.sendMessage(msg);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
最后感谢我的好哥们和那个网友。
没有更多推荐了,得之淡然,失之坦然,争其必然,顺其自然
【源码】基于Android和蓝牙的单片机温度采集系统
如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:STC89C52单片机通过HC-06蓝牙模块与Android手机通信实例-基于Android和蓝牙的单片机温度采集系统注意:APP需要点击菜单键进行蓝牙连接 整个工程下载:其中包括,1、下位机电路原理图2、下位机采集温度、控制发送、自动纠错代码3、Android端接收温度并显示代码 文件截图 这个是我当年毕业设计做的东西,虽然比较简单,但是还是有一定的参考价值的。前面写的蓝牙控制灯,只是这个毕设的前奏,而这个代码包括了Android端代码和单片机采集温度的代码。 电路原理图: 运行效果图: 本系统的开发过程中的主要内容与成果如下:1.
随着蓝牙技术的不短发展和各种智能终端的普及,提出基于Android和蓝牙的温度监测方案,该方案优点是方便人员的监测,减少人员的工作量。2.
本系统是经过详细的方案的设计与选择,各类原理图与电路图的绘制,以及PCB图的制作,设计出基于Android和蓝牙的单片机温度监测系统的硬件系统和软件系统。3.
本系统的硬件取材方便合理,各模块关系紧密,实现了数据显示、温度采集、蓝牙传输等功能。4.
本系统的软件设计合理,软件的各个模块相对独立,有利于系统的扩展,配合硬件采用了自动纠错的设计,大大的减少了硬件上潜在的出错的可能性。本系统经过不断的改进,目前基本达到了预期的目标,可得到以下的结论:当温度变化的时候,上位机可以实时显示温度;当上位机发送指令给下位机时,下位机可以及时的进行处理;当数据传输发生错误时,上位机可以自动纠错,请求重新发送;下位机也是为了防止传输出错,而采用上位机一段时间未收到信息,则自动重发。
如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:
没有更多推荐了,基于Android studio的opencv配置教程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于Android studio的opencv配置教程
&&基于Android studio的opencv配置。非常详细
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩25页未读,
定制HR最喜欢的简历
你可能喜欢博客分类:
非常详细的测试unity与android之间的通讯操作
这段时间在研究嵌入sdk,途中遇到不少问题和坑,在这就不一一说了。嵌入sdk是比较常见的吧,如接入广告啊, 新浪的分享...... 这些都需要接入sdk的。(这些我在这段时间都应以研究成功了,后期会写上)。现在我们从最基本的做吧。
其实这些和什么引擎都是没多大关系的。不管是 unity,还是cosos2d......
说白了,这些就是和移动平台有关系。ios,android,wp8啊。
如果你不熟悉android,没关系,即使你是从未打开过eclipse都可以,因为我把详细步骤给以图片的方式展示出来。现在我们就从最基本的做起吧。主要是实现在unity中去调android的方法。其实这个很简单,只是为了从未接触过安卓的人才弄的这样详细。(我以前没接触过安卓,当时多么希望能有一份这样的教程教导我啊。)
打开eclipse,新建一个安卓的工程。
在 这里要注意我们的包名,和最低的sdk,包名的话我们在unity中导出的时候需要用到。至于最低的sdk就是一个兼容问题了,如果我们选4.0一下的 话,那当我们在unity导出的时候会报错误的。我在这坑了很久很久,最后才发现一系列的错误是这个因起来的。最好是要在32位的sdk,jdk中进行 吧,这样会少很多莫名的错误问题, 注意的就是我在下图圈起来的地方。
我们一直狂点下一步,当我们看见这个时,就是最后一步了。
如果大家都没错,创建的新工程就是如下一样了。我圈起来的地方多是会用到了,需要注意的地方。
2.现在我们安卓工程创建好了,就到了开始编写的时候了。我们打开unity的安装目录
例如:D:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin找到class.jar 。
这个是unity帮我们封装好了的jar包,我们要用到该包。
然后我们将class.jar,放进我们的安卓工程去。直接拖进libs目录就可以。如图
现在我们来引用下吧,选中它,右键.......... 如下:
3. 好了,现在我们把重要的都加进来了,那我们现在就来做个简单的实验,就是点击unity中德按钮,打开一个安卓的ACtivity吧。我们首先要做的就是 把这个Activity布局。我们在res--layout文件夹下找到activity_main打开,加入这些内容:
&?xml version="1.0" encoding="utf-8"?&
&ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ITFFuture.testua.MainActivity"
tools:ignore="MergeRootFrame" &
&LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"&
android:id="@+id/textView0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="18sp"
android:background="#00FF00"
android:text="测试Unity和Android之间额通讯"
android:gravity="center_vertical|center_horizontal"
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:background="#0000FF"
android:text="大家好,我是安卓的Activity"
android:gravity="center_vertical|center_horizontal"
android:id="@+id/button0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="关闭这个Activity"/&
&/LinearLayout&
&/ScrollView&
我们的内容转成实际界面是这样的样子。
现在我们来新建一个Class,取名为OpenActivity1,如图:
然后我们接入代码,代码内容如下:
package com.ITFFuture.
import android.app.A
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
public class OpenActivity1 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text = (TextView)this.findViewById(R.id.textView1);
text.setText(this.getIntent().getStringExtra("name"));
Button close = (Button)this.findViewById(R.id.button0);
close.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
OpenActivity1.this.finish();
这个代码很简单,,改变中间的字母内容,是点击关闭按钮,关闭此Activity.最终效果如下:
好了,现在我们在MainActivity中谢方法吧,这个Activity就相当于第一个场景。 MainActivity的内容:
package com.ITFFuture.
import com.unity3d.player.UnityPlayerA
import android.os.B
import android.app.A
import android.content.C
import android.content.I
public class MainActivity extends UnityPlayerActivity {
Activity mActivity=
Context mContext =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity=
mContext =
StartActivity1("我是通过安卓中显示的Activity");
public void StartActivity1(String name)
// TODO Auto-generated method stub
Intent intent = new Intent(mContext,OpenActivity1.class);
intent.putExtra("name", name);
mActivity.startActivity(intent);
还有最后一点,要配置AndroidManifest.xml.声明我们定义的Activity.
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ITFFuture.testua"
android:versionCode="1"
android:versionName="1.0" &
android:minSdkVersion="8"
android:targetSdkVersion="18" /&
&application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" &
android:name="com.ITFFuture.testua.MainActivity"
android:label="@string/app_name" &
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:name=".OpenActivity1"&
&/activity&
&/application&
&/manifest&
我们主要是声明了我们自己的Avtivity,这个很重要,在后期加入广告啊,新浪微博分享爱啊....
好了,那我们最终来导出jar包吧。在导出之前还是先刷新下(F5),和Build 下Project.
我们现在来导出吧。
现在我们的jar包已经成功导出了。是这样子的 我们在安卓中的所有操作也就完成了哈,现在接下来的就是如何和unity进行互通了。
上面导出的jar文件(Test.jar)如果用解压软件打开会发现,除了class文件,还有项目中的资源文件、lib库,这样虽然这个jar文件在unity中可以使用,但增大了文件大小,因此可以用下面的方法来导出一个纯净的jar文件(只含有class文件)。
代码所有的.class文件都生成在了Android工程的bin文件夹中,当前工程的路径是 TestUA-&bin-&classes-&com-&ITFFuture-&testua-&你的.class文件。下面需 要对这些.class文件进行打包,苹果系统的话打开电脑的终端,cd到classes文件夹的目录下,接着执行代码
jar -cvf Test.jar *
这行代码的意思是把当前目录下的所有.class文件打包成.jar文件,保存文件名称为Test.jar。你可以再解压看看,可以看到厘米只有class文件。
3.从unity中去调用
在 unity中,我们新建一个Plugins文件夹,Plugins下面又建Android文件夹,Android文件夹下再建一个bin文件夹,我们将我 们导出的jar包放进这个文件夹下,然后我们在eclipse中的res文件复制一份放入Android。也要把AndroidManifest.xml 放进Android目录下。详细情况如下:
现在我们新建一个脚本吧。用来调用安卓中那个StartActivity1方法。
using UnityE
using System.C
public class js001 : MonoBehaviour {
private AndroidJavaObject m_
// Use this for initialization
void Start () {
AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
m_activity = jc.GetStatic&AndroidJavaObject& ("currentActivity");
void OnGUI(){
//call hello world
if(GUI.Button(new Rect(50,50,200,40),"Open Activity")){
m_activity.Call("StartActivity1","Unity中调出android的方法了");
if(Input.GetKey(KeyCode.Escape)||Input.GetKey(KeyCode.Home)){
Application.Quit();
// Update is called once per frame
void Update () {
最后我们导出apk吧。在其中要设置一项。就是包名。这个要和安卓工程的包名一模一样哦。
然后我们运行下吧。
在刚开始的时候我们会看安卓中德Activity,然后我们点击关闭按钮,就能看那Unity的Scene了。这个是我们点击Open Activity这个按钮时候,安卓中的Activity又被我们打开了。
好了,测试成功!!
遇到的问题:
1. U3D导出安卓版本,总会出现Unable to find unity activity in manifest. You need to make sure orientation attribut is set to portrait manually.
解决方法:在AndroidManifest.xml加入一行参数就可以了。
&meta-data android:name="unityplayer.UnityActivity" android:value="true" /&
参数位置如下图:
浏览 31732
stephen830
浏览: 2201955 次
来自: 上海
Netty视频教程https://www.douban.com ...
使用Netty进行Android与Server端通信实现文字发 ...
非常感谢,正好用上
提示的/222.177.4.242
无法链接到ip地址,是什 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 蓝牙串口spp 的文章

 

随机推荐