私はテレプレゼンス システムを構築しようとしています。一部は、カメラと小さな画面とモーターを備えたラズベリー パイです。もう 1 つの部分は、Android アプリを搭載したスマートフォンです。どちらもインターネットに接続されており、同じ jitsi ミーティング ルームにアクセスできます: https://meet.jit.si/fußballLive2020Uebertragung1
アイデアは、ラズベリーを家族の家など、どこかに置くことができるということです. そして、あなたのスマートフォンからラズベリーカメラが見ることができるものを見ることができ、あなたのスマートフォンからのビデオはラズベリースクリーンに転送されるので、あなたがどこにいてもあなたの家族はあなたを見たり話したりすることができます. また、スマホからラズベリーカメラを左右に動かせるようにしてほしいです。
現在、スマートフォン アプリは次のように表示されており、jitsi ビューが上部にあり、左右に 2 つのボタンがあります。
スマートフォンからラズベリーモーターに「左」と「右」のコマンドを送信することはすでに機能していますが、ビデオとオーディオは常に無効になっており、カメラまたはマイクのボタン (上の図の赤い丸で囲まれた部分) をクリックするとエラーが発生します。Error obtaining camera permission
または、マイクの許可を取得中にエラーが発生しました`。アプリを起動すると、アプリ ユーザーがルームに参加したこともラズベリーから確認できます。
Android マニフェストでは、次の権限を求めています。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
アプリを初めて起動したときに、インターネット、カメラ、マイクの許可も求められ、電話の設定でそれらが有効になっていることがわかります。また、エミュレータに問題があるかどうかを確認するために、apk を実際の電話にロードしました。
私の MainActivity.java:
package com.example.quarantina;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
private static final int MY_CAMERA_REQUEST_CODE = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webview = findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
String newUA= "Mozilla/5.0 (Macintosh; Intel Mac OS X 10 7 4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13";
webview.getSettings().setUserAgentString(newUA); // this is necesarry, because jitsi blocks requests from mobile phones, so we make it look like where on a PC
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("https://meet.jit.si/fußballLive2020Uebertragung1");
}
(ボタンのコードはここでは関係ないので、追加しませんでした)
携帯電話のブラウザでリンクを開いて、デスクトップ バージョンをリクエストするだけで、チャットに参加できることはわかっています。しかし、私のプロジェクトでは、チャットとモーターを制御する 2 つのボタンをすべて自分のアプリに統合することが非常に重要です。