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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

4回答

8824閲覧

Log.d()の中身をAndroidの実機に出力したい

EL_KAZOO

総合スコア10

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

2クリップ

投稿2019/11/21 08:48

前提・実現したいこと

Android Studioでプログラムを動かしています。
Androidのプログラム(Java)のLog.d()の中身をAndroid実機のほうに出力したいです。

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

現在、Androidが内部でマウスとトラックパッドを区別しているのかどうかを調べています。
仕様上、Android端末にマウスをつなぐと矢印カーソルが画面内に出現し、PCのように操作することができます。トラックパッドをつないでも矢印カーソルが出現することを確認しました。

方法を調べたところ、
MotionEvent.getSource()というメソッドでそれらを識別できるということで、サンプルプログラムを動かしてみたのですが、Log.dだと出力がLogcatのみになってしまい、実際に端末にマウスやトラックパッドをつないで出力を確認することができません。
このLog.dの内容をAndroidの実機端末の画面内に表示し確認したいのですが、プログラムをどのように実装することが考えられるでしょうか。

参考にしたWebサイト:https://techbooster.org/android/application/2449/

該当のソースコード

Java

1package jp.study.test4; 2 3import android.support.v7.app.AppCompatActivity; 4import android.os.Bundle; 5import android.util.Log; 6import android.view.InputDevice; 7import android.view.MotionEvent; 8 9public class MainActivity extends AppCompatActivity { 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 } 16 17 @Override 18 public boolean onTouchEvent(MotionEvent event) { 19 20 // InputDeviceの取得 21 InputDevice inputDevice = event.getDevice(); 22 int deviceId = event.getDeviceId(); // デバイスIDを取得 23 24 int source = event.getSource(); 25 26 Log.d("TouchEvent", "Input Device " + deviceId + " Source:" + source 27 + " X:" + event.getX() + ",Y:" + event.getY()); 28 29 return true; 30 } 31 32} 33

試したこと

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

使っている端末:Huawei nova lite2(Android8.0 Oreo)

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

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

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

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

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

guest

回答4

0

古めですが, 以下のような記事がありました.

アンドロイドアプリのログ出力にTimber+Log4Jを使う

アンドロイドでログ出力するにはLogクラスを利用します。ログはAndroidロギングシステムへ出力され、logcatコマンドで内容を見ることができます。
ほとんどの場合、このLogクラスで十分なのですが、業務アプリでは操作ログをファイルで保存することが必要な場合もあります。
また、Logクラスではメッセージをフォーマットする機能がないので、詳細な操作ログを出力するには適していません。

(以下略)

ファイルに出力できれば, それを表示するのは安易かと思います.

投稿2019/11/21 10:01

編集2019/11/21 10:03
jimbe

総合スコア12545

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

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

0

あまり手間を掛けずに実現する方法として、Hyperion-Androidというツールを使ってみてはどうでしょう?Timberと連携するプラグインも用意されているので、それらを導入してLog.dをTimber.dに置き換えるだけです。

build.gradleに以下を追加して、

gradle

1debugImplementation 'com.willowtreeapps.hyperion:hyperion-core:0.9.27' 2debugImplementation 'com.willowtreeapps.hyperion:hyperion-timber:0.9.27'

端末を振るとHyperion-Androidが起動します。

投稿2019/11/26 01:40

kakajika

総合スコア3131

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

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

0

トースト表示ではだめかな?
画面をタップ、離す、をトースト表示するプログラムです
過去に書いたやつでkotlinですがご参考まで

override fun onTouchEvent(event: MotionEvent): Boolean { var Event = "" when (event.action) { MotionEvent.ACTION_DOWN -> Event = "タップ" MotionEvent.ACTION_UP -> Event = "離した" } Toast.makeText(applicationContext,Event,Toast.LENGTH_SHORT).show() SystemClock.sleep(100) return super.onTouchEvent(event) } コード

投稿2019/11/21 09:48

HRSKT

総合スコア168

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

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

0

自己解決

回答してくださった皆様、ありがとうございました。
各回答、参考にしてみましたが、以下のコードでうまくメソッドの結果が実機の画面に表示できました。
(TextViewが画面の動的な文字表示変更にも使えるとは知りませんでした)

Java

1package jp.study.myapplication; 2 3import androidx.appcompat.app.AppCompatActivity; 4 5import android.os.Bundle; 6import android.view.InputDevice; 7import android.view.MotionEvent; 8import android.widget.TextView; 9 10public class MainActivity extends AppCompatActivity { 11 private TextView textView; 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 18 textView = findViewById(R.id.action_source); 19 } 20 21 @Override 22 public boolean onTouchEvent(MotionEvent event){ 23 24 //InputDeviceの取得(インスタンス化) 25 InputDevice inputDevice = event.getDevice(); 26 //デバイスID取得 27 28 int source = event.getSource(); 29 String source_text = Integer.toString(source); 30 textView.setText(source_text); 31 32 return false; 33 34 } 35 36} 37

投稿2019/11/27 04:57

EL_KAZOO

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問