Мне нужно разработать приложение, которое запускает видео и индикатор одновременно. Приложение содержит три экрана: домашний экран (или меню), на котором будет два изображения / один экран для видео «gare» / другой для видео «mas».
Я использую IOIO-TOT доска для этого. Я уже разработал приложение на основе основного примера HelloIOIO, который создает togglebutton
для питания state light
на плате.
Я протестировал приложение с мостовым соединением, это означает, что телефон иплата подключена через компьютер и я запускаю приложение из Android Studio. Все работает нормально, видео воспроизводится и включаются светодиоды.
Но я обнаружил, что, используя желаемое окончательное соединение, то есть телефон, подключенный к плате IOIO с помощью кабеля OTG, запускаю приложение на телефоне (иногда он зависает), а светодиоды не горят.
Я думал, что лучшим решением было бы показать вам код, поскольку у него наверняка есть множество проблем, которых я не вижу! : S
On MainAcitvity:
lanceurgare = ImageView, запускающий ActivityGare при нажатии (для видео «gare»)
lanceurmas = ImageView, запускающий ActivityMas при нажатии(для видео "mas") *
package com.example.recreationappioio;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private ImageView lanceurgare;
private ImageView lanceurmas;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lanceurgare = (ImageView) findViewById(R.id.lanceurgare);
lanceurgare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent otherActivity = new Intent(getApplicationContext(), ActivityGare.class);
startActivity(otherActivity);
finish();
}
});
lanceurmas = (ImageView) findViewById(R.id.lanceurmas);
lanceurmas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent otherActivity = new Intent(getApplicationContext(), ActivityMas.class);
startActivity(otherActivity);
finish();
}
});
}
}
На ActivityGare: я оставил основные комментарии от IOIO. Светодиод подключен к контакту 11.
package com.example.recreationappioio;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
import ioio.lib.api.DigitalOutput;
import ioio.lib.api.IOIO;
import ioio.lib.api.IOIO.VersionType;
import ioio.lib.api.exception.ConnectionLostException;
import ioio.lib.util.BaseIOIOLooper;
import ioio.lib.util.IOIOLooper;
import ioio.lib.util.android.IOIOActivity;
public class ActivityGare extends IOIOActivity {
/**
* This is the thread on which all the IOIO activity happens. It will be run
* every time the application is resumed and aborted when it is paused. The
* method setup() will be called right after a connection with the IOIO has
* been established (which might happen several times!). Then, loop() will
* be called repetitively until the IOIO gets disconnected.
*/
class Looper extends BaseIOIOLooper {
/** The on-board LED. */
private DigitalOutput led_;
/**
* Called every time a connection with IOIO has been established.
* Typically used to open pins.
*/
@Override
protected void setup() throws ConnectionLostException {
showVersions(ioio_, "IOIO connecté !");
led_ = ioio_.openDigitalOutput(11,true);
//enableUi(true);
}
/**
* Called repetitively while the IOIO is connected.
*
* @throws ConnectionLostException
* When IOIO connection is lost.
* @throws InterruptedException
* When the IOIO thread has been interrupted.
*
* @see ioio.lib.util.IOIOLooper#loop()
*/
@Override
public void loop() throws ConnectionLostException, InterruptedException {
led_.write(true);
Thread.sleep(100);
}
/**
* Called when the IOIO is disconnected.
*
* @see ioio.lib.util.IOIOLooper#disconnected()
*/
@Override
public void disconnected() {
//enableUi(false);
toast("IOIO déconnecté !");
}
/**
* Called when the IOIO is connected, but has an incompatible firmware version.
*
* @see ioio.lib.util.IOIOLooper#incompatible(IOIO)
*/
@Override
public void incompatible() {
showVersions(ioio_, "Incompatible firmware version!");
}
}
/**
* A method to create our IOIO thread.
*
*/
@Override
protected IOIOLooper createIOIOLooper() {
return new Looper();
}
private void showVersions(IOIO ioio, String title) {
toast(String.format("%s\n" +
"IOIOLib: %s\n" +
"Application firmware: %s\n" +
"Bootloader firmware: %s\n" +
"Hardware: %s",
title,
ioio.getImplVersion(VersionType.IOIOLIB_VER),
ioio.getImplVersion(VersionType.APP_FIRMWARE_VER),
ioio.getImplVersion(VersionType.BOOTLOADER_VER),
ioio.getImplVersion(VersionType.HARDWARE_VER)));
}
private void toast(final String message) {
final Context context = this;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_video);
VideoView videoView = findViewById(R.id.video_viewok);
String videoPath = "android.resource://" + getPackageName() + "/" + R.raw.gare;
Uri uri = Uri.parse(videoPath);
videoView.setVideoURI(uri);
videoView.start();
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
mediaController.setAnchorView(videoView);
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Intent otherActivity = new Intent(getApplicationContext(), MainActivity.class);
startActivity(otherActivity);
finish();
}
});
}
}
ActivityMasпостроен точно на той же модели, я просто изменил контакт 11 на 13.
Я знаю, что это много чтения, но я не знаю, что делать дальше. Заранее спасибо за всю помощь и советы вамможете дать мне!