質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

1回答

555閲覧

Android Studioのアプリ開発について

telepathy-cool

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

1クリップ

投稿2019/10/17 06:09

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

android studioでアプリ開発をしています。
アプリの内容は「android端末とArduinoでbluetooth通信を行う」というものです。
Arduinoとandroid端末で値をやりとりできるアプリを開発するのが最終目標です。

発生している問題・エラーメッセージ

Overrideにいつも赤線が引かれてビルドできません また、ネットのソースコードをそのままコピペすると、importのところに赤線が引かれて解決ができません。

該当のソースコード

Java

1AndroidManifest.xml 2<?xml version="1.0" encoding="utf-8"?> 3<manifest xmlns:android="http://schemas.android.com/apk/res/android" 4 package="gclue.com.mybluetooth" > 5 6 <uses-permission android:name="android.permission.BLUETOOTH" /> 7 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 8 9 <application 10 android:allowBackup="true" 11 android:icon="@drawable/ic_launcher" 12 android:label="@string/app_name" 13 android:theme="@style/AppTheme" > 14 <activity 15 android:name=".MainActivity" 16 android:label="@string/app_name" > 17 <intent-filter> 18 <action android:name="android.intent.action.MAIN" /> 19 20 <category android:name="android.intent.category.LAUNCHER" /> 21 </intent-filter> 22 </activity> 23 </application> 24 25</manifest> 26 27---------------- 28 29MainActivity.java 30package gclue.com.mybluetooth; 31 32import android.bluetooth.BluetoothAdapter; 33import android.bluetooth.BluetoothDevice; 34import android.bluetooth.BluetoothSocket; 35import android.os.Bundle; 36import android.os.Handler; 37import android.os.Message; 38import android.support.v7.app.ActionBarActivity; 39import android.util.Log; 40import android.view.View; 41import android.widget.Button; 42import android.widget.TextView; 43 44import java.io.IOException; 45import java.io.InputStream; 46import java.io.OutputStream; 47import java.util.Set; 48import java.util.UUID; 49 50public class MainActivity extends ActionBarActivity implements Runnable, View.OnClickListener { 51 /* tag */ 52 private static final String TAG = "BluetoothSample"; 53 54 /* Bluetooth Adapter */ 55 private BluetoothAdapter mAdapter; 56 57 /* Bluetoothデバイス */ 58 private BluetoothDevice mDevice; 59 60 /* Bluetooth UUID */ 61 private final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 62 63 /* デバイス名 */ 64 private final String DEVICE_NAME = "RNBT-205F"; 65 66 /* Soket */ 67 private BluetoothSocket mSocket; 68 69 /* Thread */ 70 private Thread mThread; 71 72 /* Threadの状態を表す */ 73 private boolean isRunning; 74 75 /** 接続ボタン. */ 76 private Button connectButton; 77 78 /** 書込みボタン. */ 79 private Button writeButton; 80 81 /** ステータス. */ 82 private TextView mStatusTextView; 83 84 /** Bluetoothから受信した値. */ 85 private TextView mInputTextView; 86 87 /** Action(ステータス表示). */ 88 private static final int VIEW_STATUS = 0; 89 90 /** Action(取得文字列). */ 91 private static final int VIEW_INPUT = 1; 92 93 /** Connect確認用フラグ */ 94 private boolean connectFlg = false; 95 96 /** BluetoothのOutputStream. */ 97 OutputStream mmOutputStream = null; 98 99 @Override 100 public void onCreate(Bundle savedInstanceState){ 101 super.onCreate(savedInstanceState); 102 setContentView(R.layout.activity_main); 103 104 mInputTextView = (TextView)findViewById(R.id.inputValue); 105 mStatusTextView = (TextView)findViewById(R.id.statusValue); 106 107 connectButton = (Button)findViewById(R.id.connectButton); 108 writeButton = (Button)findViewById(R.id.writeButton); 109 110 connectButton.setOnClickListener(this); 111 writeButton.setOnClickListener(this); 112 113 // Bluetoothのデバイス名を取得 114 // デバイス名は、RNBT-XXXXになるため、 115 // DVICE_NAMEでデバイス名を定義 116 mAdapter = BluetoothAdapter.getDefaultAdapter(); 117 mStatusTextView.setText("SearchDevice"); 118 Set< BluetoothDevice > devices = mAdapter.getBondedDevices(); 119 for ( BluetoothDevice device : devices){ 120 121 if(device.getName().equals(DEVICE_NAME)){ 122 mStatusTextView.setText("find: " + device.getName()); 123 mDevice = device; 124 } 125 } 126 127 } 128 129 @Override 130 protected void onPause(){ 131 super.onPause(); 132 133 isRunning = false; 134 try{ 135 mSocket.close(); 136 } 137 catch(Exception e){} 138 } 139 140 @Override 141 public void run() { 142 InputStream mmInStream = null; 143 144 Message valueMsg = new Message(); 145 valueMsg.what = VIEW_STATUS; 146 valueMsg.obj = "connecting..."; 147 mHandler.sendMessage(valueMsg); 148 149 try{ 150 151 // 取得したデバイス名を使ってBluetoothでSocket接続 152 mSocket = mDevice.createRfcommSocketToServiceRecord(MY_UUID); 153 mSocket.connect(); 154 mmInStream = mSocket.getInputStream(); 155 mmOutputStream = mSocket.getOutputStream(); 156 157 // InputStreamのバッファを格納 158 byte[] buffer = new byte[1024]; 159 160 // 取得したバッファのサイズを格納 161 int bytes; 162 valueMsg = new Message(); 163 valueMsg.what = VIEW_STATUS; 164 valueMsg.obj = "connected."; 165 mHandler.sendMessage(valueMsg); 166 167 connectFlg = true; 168 169 while(isRunning){ 170 171 // InputStreamの読み込み 172 bytes = mmInStream.read(buffer); 173 Log.i(TAG,"bytes="+bytes); 174 // String型に変換 175 String readMsg = new String(buffer, 0, bytes); 176 177 // null以外なら表示 178 if(readMsg.trim() != null && !readMsg.trim().equals("")){ 179 Log.i(TAG,"value="+readMsg.trim()); 180 181 valueMsg = new Message(); 182 valueMsg.what = VIEW_INPUT; 183 valueMsg.obj = readMsg; 184 mHandler.sendMessage(valueMsg); 185 } 186 else{ 187 // Log.i(TAG,"value=nodata"); 188 } 189 190 } 191 }catch(Exception e){ 192 193 valueMsg = new Message(); 194 valueMsg.what = VIEW_STATUS; 195 valueMsg.obj = "Error1:" + e; 196 mHandler.sendMessage(valueMsg); 197 198 try{ 199 mSocket.close(); 200 }catch(Exception ee){} 201 isRunning = false; 202 connectFlg = false; 203 } 204 } 205 206 @Override 207 public void onClick(View v) { 208 if(v.equals(connectButton)) { 209 // 接続されていない場合のみ 210 if (!connectFlg) { 211 mStatusTextView.setText("try connect"); 212 213 mThread = new Thread(this); 214 // Threadを起動し、Bluetooth接続 215 isRunning = true; 216 mThread.start(); 217 } 218 } else if(v.equals(writeButton)) { 219 // 接続中のみ書込みを行う 220 if (connectFlg) { 221 try { 222 mmOutputStream.write("2".getBytes()); 223 mStatusTextView.setText("Write:"); 224 } catch (IOException e) { 225 Message valueMsg = new Message(); 226 valueMsg.what = VIEW_STATUS; 227 valueMsg.obj = "Error3:" + e; 228 mHandler.sendMessage(valueMsg); 229 } 230 } else { 231 mStatusTextView.setText("Please push the connect button"); 232 } 233 } 234 } 235 236 /** 237 * 描画処理はHandlerでおこなう 238 */ 239 Handler mHandler = new Handler() { 240 @Override 241 public void handleMessage(Message msg) { 242 int action = msg.what; 243 String msgStr = (String)msg.obj; 244 if(action == VIEW_INPUT){ 245 mInputTextView.setText(msgStr); 246 } 247 else if(action == VIEW_STATUS){ 248 mStatusTextView.setText(msgStr); 249 } 250 } 251 }; 252} 253 254activity_main.xml 255<?xml version="1.0" encoding="utf-8"?> 256<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 257 android:layout_width="fill_parent" 258 android:layout_height="fill_parent" 259 android:orientation="vertical" > 260 261 <Button android:id="@+id/connectButton" 262 android:layout_width="fill_parent" 263 android:layout_height="wrap_content" 264 android:text="Connect" /> 265 266 <TextView 267 android:id="@+id/statusValue" 268 android:layout_width="fill_parent" 269 android:layout_height="wrap_content" 270 /> 271 272 <TextView 273 android:id="@+id/inputValue" 274 android:layout_width="fill_parent" 275 android:layout_height="wrap_content" 276 /> 277 278 <Button android:id="@+id/writeButton" 279 android:layout_width="fill_parent" 280 android:layout_height="wrap_content" 281 android:text="Write" /> 282 283</LinearLayout>

試したこと

Java初心者なのでソースコードの解読ができず、何もできませんでした。

補足情報(FW/ツールのバージョンなど)

Android studio 3.5.0.0
実行環境:API 28

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/10/17 06:13

コンパイルしたときのエラー・メッセージをそのままの形で提示してください
thkana

2019/10/17 06:16

ArduinoとAndroid、よく間違えるけど。 タグを修正しておいてくださいね。
dodox86

2019/10/17 06:35

> また、ネットのソースコードをそのままコピペすると、importのところに赤線が引かれて解決ができません。 > Java初心者なのでソースコードの解読ができず、何もできませんでした。 お言葉ですが、回答に躊躇してしまいます。ある程度でも、JavaとAndroidプログラミングの基礎的なところから先に学習された方が良いのでは、と思いました。(いや、別に私に回答を求められている訳ではないのは承知していますが)
guest

回答1

0

java

1public class MainActivity extends ActionBarActivity implements Runnable, View.OnClickListener {

上記にあるActionBarActivityは、すでに廃止されています。代替クラスであるAppCompatActivityに置き換えましょう。

ただ、相当古い資料を参考にされていることが想像されます。置き換えただけで想定した動作になるかは何とも言えません。まずはより新しい資料を求めた方がいいと思います。

投稿2019/10/17 09:27

keicha_hrs

総合スコア6766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問