從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文章
3941瀏覽量
127718 -
OTG
+關注
關注
2文章
149瀏覽量
45500 -
Arduino
+關注
關注
188文章
6477瀏覽量
187554
發布評論請先 登錄
相關推薦
評論