Подключение Arduino к Android StudioAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Подключение Arduino к Android Studio

Сообщение Anonymous »

Можно ли подключить проект Arduino в студии Android? У меня есть Arduino Uno 3 и компактный оптический датчик пыли GP2Y1014AU0F. У меня проблема, я думаю, реализация ("com.github.mik3y:usb-serial-for-android:3.7.3") не работает? Поскольку в моем фрагменте есть ошибка, она

Не удалось найти com.hoho.android:usb-serial-for-android:3.3.0.

хотя это уже реализовано.
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import com.github.anastr.speedviewlib.SpeedView;
import com.hoho.android.usbserial.driver.UsbSerialDriver;
import com.hoho.android.usbserial.driver.UsbSerialPort;
import com.hoho.android.usbserial.driver.UsbSerialProber;

import java.io.IOException;

public class CurrentFragment extends Fragment {

private static final String ACTION_USB_PERMISSION = "com.example.USB_PERMISSION";
UsbManager usbManager;
UsbDevice device;
UsbSerialPort port;
SpeedView speedView;
TextView textView;

public CurrentFragment() {
// Required empty public constructor
}

public static CurrentFragment newInstance(String param1, String param2) {
CurrentFragment fragment = new CurrentFragment();
Bundle args = new Bundle();
args.putString("param1", param1);
args.putString("param2", param2);
fragment.setArguments(args);
return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
// Get parameters if needed
}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_current, container, false);

speedView = view.findViewById(R.id.speedView);
textView = view.findViewById(R.id.textView);

Button acuteButton = view.findViewById(R.id.acute);
Button goodButton = view.findViewById(R.id.good);
Button unhealthButton = view.findViewById(R.id.unhealthy);
Button emergencyButton = view.findViewById(R.id.emergency);
Button veryunhealthyButton = view.findViewById(R.id.veryunhealthy);
Button fairButton = view.findViewById(R.id.fair);

acuteButton.setAlpha(0f);
goodButton.setAlpha(0f);
unhealthButton.setAlpha(0f);
emergencyButton.setAlpha(0f);
veryunhealthyButton.setAlpha(0f);
fairButton.setAlpha(0f);

acuteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new AcuteFragment());
}
});

goodButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new GoodFragment());
}
});

unhealthButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new UnhealthyFragment());
}
});

emergencyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new CurrentFragment());
}
});

veryunhealthyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new VeryUnhealthyFragment());
}
});

fairButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadFragment(new FairFragment());
}
});

usbManager = (UsbManager) getActivity().getSystemService(Context.USB_SERVICE);
PendingIntent permissionIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
getActivity().registerReceiver(usbReceiver, filter);

for (UsbDevice device : usbManager.getDeviceList().values()) {
usbManager.requestPermission(device, permissionIntent);
}

return view;
}

private final BroadcastReceiver usbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
synchronized (this) {
device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
if (device != null) {
UsbDeviceConnection connection = usbManager.openDevice(device);
UsbSerialDriver driver = UsbSerialProber.getDefaultProber().probeDevice(device);
if (driver != null) {
port = driver.getPorts().get(0);
try {
port.open(connection);
port.setParameters(9600, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
Log.d("USB", "Port opened and configured");

new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
byte[] buffer = new byte[16];
int numBytesRead = port.read(buffer, 1000);
final String data = new String(buffer, 0, numBytesRead);
Log.d("USB", "Data read: " + data);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
updateUI(data);
}
});
} catch (IOException e) {
Log.e("USB", "IOException: " + e.getMessage());
e.printStackTrace();
break;
}
}
}
}).start();

} catch (IOException e) {
Log.e("USB", "Port open failed: " + e.getMessage());
e.printStackTrace();
}
} else {
Log.e("USB", "Driver is null");
}
}
}
}
}
}
};

private void updateUI(String data) {
try {
float dustDensity = Float.parseFloat(data.trim().split(" ")[2]);
speedView.speedTo(dustDensity);
textView.setText("Dust Density: " + dustDensity + " ug/m3");

if (dustDensity

Подробнее здесь: https://stackoverflow.com/questions/786 ... oid-studio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»