从http://developer.android.com/sdk/index.html获取android studio
单击“下载android studio”按钮开始下载
同意按照条款和条件,您的下载应该开始
文件将是exe文件,文件大小将约为gig
步骤2:安装Android Studio
通过一些基本的安装步骤来安装exe文件
最后,它将自动安装最新的SDK版本,使其完成。
最后,您将获得android studio的欢迎屏幕。
第3步:设置在Android Studio中
在在欢迎屏幕上,您应该看到配置按钮,通过选择它,您应该进入配置页面。单击第一个选项将是“ SDK管理器”,方法是单击一个新窗口,其中将显示当前SDK的详细信息。可以选择“启动独立的SDK管理器”,方法是单击将打开良好的旧SDK管理器,然后您可以根据需要添加新的SDK工具。
Android studio有一个用于测试android代码的模拟器,但是很遗憾,我们不能在这种情况下使用它,因为这涉及到物理设备与另一台设备通信。相反,我们可以使用Android手机本身来调试代码。
由于我们使用的是Android设备来调试代码,因此我们只需下载该设备特定版本的“ SDK平台”即可,首先了解android手机的操作系统版本。就我而言,我使用的是具有5.0(棒棒糖)的Samsung note3,因此只需从“ Android 5.0.1(API 21)”下载“ SDK平台”就足够了。
步骤4 :关于库
我用来进行通信的库称为http://www.physicaloid.com/上的physicaloid,该库最近更新于2年前最终更新无法正常工作(至少对我而言)。因此,在与github存储库中的人讨论之后,我设法获得了该库的旧工作jar文件。
通过使用该库,我们不仅可以与Arduino通信,而且可以将已编译的十六进制文件上传到Arduino,库具有内置的avrdude功能。
步骤5:在Android Studio中创建新项目
首先,我想制作一个外观与Arduino的串行监视器窗口相同的应用程序。
在android studio的欢迎屏幕上,将有一个创建新项目的选项,选择“开始一个新的android studio项目”
在下一页中输入您的项目名称和位置,然后单击下一步
在下一页中,选择我们正在为其开发应用程序的平台,然后选择正确的手机版本,然后单击下一步。
在下一页中,默认情况下将选择“空白活动”并保持现状。并在下一页上为您的活动(您在应用程序的主屏幕)命名。
然后单击完成,新创建的项目将在android studio中打开,我们现在就可以进行处理
步骤6:将库添加到新项目中
在左上角在主屏幕上,将出现一个下拉菜单,其名称为android,将选项更改为project以查看项目的目录结构。
在目录结构中,通过展开“ app”文件夹,您可以找到lib该文件夹是放置我们的库的默认文件夹。
复制physicaloidlibrary.jar文件并将其粘贴到libs文件夹中
粘贴后,单击顶部的“与gradle文件同步项目”按钮。
现在库已添加,我们可以在代码中使用其功能。
在首次创建项目时自动创建的主要活动将位于
App》 src》 main》 java》 YOUR_ACTIVITY
布局将位于
App》 src》 main》 res》布局》 activity_serial_monitor.xml
步骤7:编辑Manifest.xml
清单文件类似于我们项目的主要属性文件,其中包含权限详细信息和活动详细信息
清单文件位于App》 src》 main》 AndroidManifest中.xml
打开文件并添加
我的清单文件上方的行看起来像
通过添加该行,我们每次将USB设备连接到OTG端口时都要求用户许可
步骤8:设计布局
编辑应在“ content_serial_monitor.xml”文件中完成
我已拖动3个按钮,1个编辑文本,1个文本视图显示在屏幕上,然后重命名并按正确顺序放置它们。
打开–打开与USB设备的连接
关闭–关闭与USB设备的连接
发送–将数据发送到Arduino
我还添加了一个微调器,以选择串行监视器中可用的波特率和自动滚动功能
将此字符串数组添加到位于应用程序》 src》 main》 res》值》 strings.xml中的strings.xml文件中
Serial Monitor
Settings
Choose Baudrate
300 baud
1200 baud
2400 baud
4800 baud
9600 baud
19200 baud
38400 baud
576600 baud
744880 baud
115200 baud
230400 baud
250000 baud
让我们在应用程序中添加精美的图标
右键单击应用程序》新建》图像资产
现在浏览所需的图像文件并将其设置为ic_launcher,它将覆盖默认的android图标
Step 9:将代码添加到UI元素
我附加了完整的Java文件Serial_monitor.java,首先下载了该文件并将其与这些小代码段进行比较。
首先我们创建所有UI元素和库变量
Button btOpen, btClose, btWrite;
EditText etWrite;
TextView tvRead;
Spinner spBaud;
CheckBox cbAutoscroll;
Physicaloid mPhysicaloid; // initialising library
下一步,在onCreate方法中,我们可以初始化我们创建的那些变量
btOpen = (Button) findViewById(R.id.btOpen);
btClose = (Button) findViewById(R.id.btClose);
btWrite = (Button) findViewById(R.id.btWrite);
etWrite = (EditText) findViewById(R.id.etWrite);
tvRead = (TextView) findViewById(R.id.tvRead);
spBaud = (Spinner) findViewById(R.id.spBaud);
cbAutoscroll = (CheckBox)findViewById(R.id.autoscroll);
mPhysicaloid = new Physicaloid(this); // setting the context for library
现在我们可以显示屏幕上必需的UI元素,我正在调用一个方法来实现此目的
该方法采用布尔参数,该参数指定天气应用是否已连接到Arduino
setEnabledUi(false);//未连接到Arduino,所以为假
//setEnabledUi method to set UI elements on screen
private void setEnabledUi(boolean on) {
if(on) { // if connected to device
btOpen.setEnabled(false); //hide open button (already opened)
spBaud.setEnabled(false); //hide baudrate selector
cbAutoscroll.setEnabled(false); // hide autoscroll
btClose.setEnabled(true); // display close button
btWrite.setEnabled(true); // display send button
etWrite.setEnabled(true); // display edittext field
} else { // if not connected to device
btOpen.setEnabled(true); //display open button
spBaud.setEnabled(true); //display baudrate selector
cbAutoscroll.setEnabled(true); //display autoscroll
btClose.setEnabled(false); // hide close button (already closed)
btWrite.setEnabled(false); // hide send button
etWrite.setEnabled(false); // hide edittext field
}
}
现在我们根据需要显示了所有内容,现在我们可以向按钮添加操作。
打开按钮的侦听器方法,在此方法涵盖了波特率设置,自动滚动选项以及与设备的连接。
public void onClickOpen(View v) {
// setting the baudrate based on spinner
String baudtext = spBaud.getSelectedItem().toString(); // get the text from spinner
//switch statement to check for baud rate
switch (baudtext) {
case “300 baud”:
mPhysicaloid.setBaudrate(300);
break;
case “1200 baud”:
mPhysicaloid.setBaudrate(1200);
break;
case “2400 baud”:
mPhysicaloid.setBaudrate(2400);
break;
case “4800 baud”:
mPhysicaloid.setBaudrate(4800);
break;
case “9600 baud”:
mPhysicaloid.setBaudrate(9600);
break;
case “19200 baud”:
mPhysicaloid.setBaudrate(19200);
break;
case “38400 baud”:
mPhysicaloid.setBaudrate(38400);
break;
case “576600 baud”:
mPhysicaloid.setBaudrate(576600);
break;
case “744880 baud”:
mPhysicaloid.setBaudrate(744880);
break;
case “115200 baud”:
mPhysicaloid.setBaudrate(115200);
break;
case “230400 baud”:
mPhysicaloid.setBaudrate(230400);
break;
case “250000 baud”:
mPhysicaloid.setBaudrate(250000);
break;
default: // default is 9600
mPhysicaloid.setBaudrate(9600);
}
if(mPhysicaloid.open()) { // tries to connect to device and if device was connected
setEnabledUi(true);
if(cbAutoscroll.isChecked()) { // if auto scroll was selected
tvRead.setMovementMethod(new ScrollingMovementMethod());
}
// read listener, When new data is received from Arduino add it to Text view
mPhysicaloid.addReadListener(new ReadLisener() {
@Override
public void onRead(int size) {
byte[] buf = new byte[size];
mPhysicaloid.read(buf, size);
tvAppend(tvRead, Html.fromHtml(“” + new String(buf) + “”)); // add data to text viiew
}
});
} else {
//Error while connecting
Toast.makeText(this, “Cannot open”, Toast.LENGTH_LONG).show();
}
}
tvAppend方法将接收到的数据写入Textview
Handler mHandler = new Handler();
private void tvAppend(TextView tv, CharSequence text) {
final TextView ftv = tv;
final CharSequence ftext = text;
mHandler.post(new Runnable() {
@Override
public void run() {
ftv.append(ftext); // add text to Text view
}
});
}
用于关闭按钮的监听器
public void onClickClose(View v) { //when close button is pressed
if(mPhysicaloid.close()) { //close the connection to arduino
mPhysicaloid.clearReadListener(); //clear read listener
setEnabledUi(false); // set UI accordingly
}
}
发送按钮的监听器
public void onClickWrite(View v) { // when send button is prressed
String str = etWrite.getText().toString()+“ ”; //get text from EditText
if(str.length()》0) {
byte[] buf = str.getBytes(); //convert string to byte array
mPhysicaloid.write(buf, buf.length); //write data to arduino
}
}
这一切都已完成,只需连接手机并运行应安装并打开的程序即可。
第10步:测试应用程序
现在连接手机并通过以下方式运行代码使用顶部的“播放”按钮,现在会弹出设备选择器对话框,并询问该应用程序应安装在哪个设备上。
注意:如果您在列表中找不到手机,请尝试重新安装手机驱动程序。
p》
如果选择正确,则应用程序应自动安装在手机上,并对UI进行必要的调整。
运行一些测试代码并上传到arduino
void setup()
{
// Open serial communications and wait for port to open:
// Serial.begin(1200);
// Serial.begin(2400);
// Serial.begin(4800);
Serial.begin(9600);
// Serial.begin(14400);
// Serial.begin(19200);
// Serial.begin(38400);
// Serial.begin(57600);
// Serial.begin(115200);
}
void loop()
{
while(Serial.available() 》 0) {
Serial.write(Serial.read());
}
}
断开手机与PC的连接,并使用OTG电缆连接到Arduino,并发送一些应返回的数据
步骤11:其他用途
您可以修改布局和代码以适合您的需要,并为分别制造的每台设备制作一个应用程序
例如,我修改了相同的项目以用作我的电动机计时器控制器的接口。
责任编辑:wv
-
Android
+关注
关注
12文章
3915浏览量
127025 -
OTG
+关注
关注
2文章
146浏览量
45356 -
Arduino
+关注
关注
187文章
6456浏览量
186478
发布评论请先 登录
相关推荐
评论