Androidアプリケーションの画面にログメッセージ(android.util.Log
を使用して印刷します)を表示することはできますか?Androidアプリケーションの画面にログメッセージを表示
画面に出力するだけの方法がありますか?
のようなものSystem.out.println
?
Androidアプリケーションの画面にログメッセージ(android.util.Log
を使用して印刷します)を表示することはできますか?Androidアプリケーションの画面にログメッセージを表示
画面に出力するだけの方法がありますか?
のようなものSystem.out.println
?
他の人が示唆しているように、あなたはlog catを使用できます。エミュレータを使用している場合やデバイスをデバッグしている場合は、adb logcat
を使用してメッセージを表示できます。 Eclipseのデバッグパースペクティブには、それを行うウィンドウがあります。
デバッガが接続されていない別の方法は、CatLog - Logcat Readerアプリケーションを使用することです。
編集
私たちはアンドロイドでいくつかのフレームワークを利用できると思います。それがために働く場合は、これらのリンクをチェックして見てください、あなた
http://developer.android.com/reference/java/util/logging/Logger.html
http://developer.android.com/reference/java/util/logging/LogManager.html
ます。また、このプロジェクトをチェックアウトすることができます...
はいゼロヨン
あなたがしようとしているのはアンドロイドシェル01に 'logcat'コマンドをドロップすることです出力ストリームとしてコマンド出力を取得します。このlinkが役に立ちます。
"android.widget.Toast.makeText(Context context、CharSequence text、int duration)"を使用して、尋ねているようなことをします。いくつかの簡単なメッセージを画面に表示し、自動的に(最後のパラメータに基づいて)離れるようにする最も簡単な方法のようです。まあ
本当に? Toastはメッセージ用であり、android.util.Logのようなログ出力のストリームではありません。 LENGTH_SHORTで10秒間に50回トーストしよう。あなたはトーストを次々に5分間見ています。また、あなたはandroid.util.Logからどのように読んでいますか? – garlicman
投票をする前に質問を参照してください。彼はログメッセージを画面に印刷する方法を望んでいました。注意すべき点は、ログから読み込み、画面に書き込む方法ではなく、ログそのものをコードしているときに制御することでした。トーストを使用して彼のログをすべて書くことは提案していませんでしたが(明らかに良いアイデアではありません)、画面上にいくつかの重要なメッセージを表示したい場合は、ログキャスト以外のあなたの「より一般的な」ソリューションが表示されない限り、トーストの提案(ログキャットに加えて)。 –
しました。 「彼はログメッセージをスクリーンに印刷する方法を望んでいた」いいえ、彼は画面にandroid.util.Logメッセージを印刷する方法を望んでいました。もしあなたがこれを自分で行う必要があるのであれば(これは私がこの質問に遭遇した理由です)、あなたはToastを提案していないでしょう。これはAppからLogを読むのを助けません。 android.util.Logに記録されるメッセージの種類。 Logは、Toastが代替デバッグツールであるところでデバッグする単なる方法ではありません。アプリのどこからでもトーストすることはできませんが、ログすることはできます。 -1も私のためにポイントを失う。この回答は役に立たない。 – garlicman
:-)
、thisのlibを使用して画面上にあなたが欲しいものを記録するためのソリューションがあります。それは私のために働いていなかったので、私はそれの例を見つけることができる私自身のソリューションを開発here。それは本当に簡単です、ちょうど例えば、
package br.com.ideiageni.onscreenlogSample;
import android.app.Activity;
import android.graphics.Color;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
/**
* Created by ariel on 07/07/2016.
*/
public class OnScreenLog {
private static int timeoutTime = 1000;
private static TextView tvLog;
private static int logCount = 0;
private static int logCountMax = 30;
private static String[] logs = new String[logCountMax];
private static int cntClicks = 0;
private static boolean visibility = false;
private static Activity activity;
private int maxClicks = 5;
public OnScreenLog(){}
public OnScreenLog(Activity activity, int ViewID){
OnScreenLog.activity = activity;
tvLog = new TextView(activity.getApplicationContext());
maintainLog("Log is working");
tvLog.setLayoutParams(new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT));
tvLog.setTextColor(Color.BLACK);
tvLog.setBackgroundColor(Color.LTGRAY);
tvLog.setAlpha((float) 0.4);
View v = null;
LinearLayout linearLayout;
RelativeLayout relativeLayout;
try {
linearLayout = (LinearLayout) activity.findViewById(ViewID);
} catch (ClassCastException e) {linearLayout = null;};
try {
relativeLayout = (RelativeLayout) activity.findViewById(ViewID);
} catch (ClassCastException e) {relativeLayout = null;};
if(linearLayout != null) {
linearLayout.addView(tvLog);
v = linearLayout;
} else if(relativeLayout != null) {
relativeLayout.addView(tvLog);
v = relativeLayout;
}
if(v != null) {
v.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
cntClicks++;
timerHandler.removeCallbacks(rTimeout);
timerHandler.postDelayed(rTimeout, timeoutTime);
if (cntClicks > maxClicks-1) {
setLogVisible(!visibility);
timerHandler.removeCallbacks(rTimeout);
cntClicks = 0;
}
break;
}
return false;
}
});
}
}
public void log (String text){
String logText = text;
maintainLog(logText);
}
public void log (int text){
String logText = String.valueOf(text);
maintainLog(logText);
}
public void log (int[] text){
StringBuilder builder = new StringBuilder();
for (int i : text) {
builder.append(i);
builder.append("-");
}
String logText = builder.toString();
maintainLog(logText);
}
public void log (byte[] text){
StringBuilder builder = new StringBuilder();
for (int i : text) {
builder.append(i);
builder.append("-");
}
String logText = builder.toString();
maintainLog(logText);
}
private void maintainLog(String newText){
String logText = "";
if(logCount<logCountMax) logCount++;
for(int i=logCount-1; i>0; i--){
logs[i] = logs[i-1];
}
logs[0] = newText;
for(int i=0; i<logCount; i++){
if(i<logCount-1) logText+=logs[i]+System.getProperty("line.separator");
else logText+=logs[i];
}
tvLog.setText(logText);
}
public void clearLog(){
tvLog.setText("");
}
public void setLogVisible(boolean visibility){
if(visibility) tvLog.setVisibility(View.VISIBLE);
else tvLog.setVisibility(View.INVISIBLE);
OnScreenLog.visibility = visibility;
}
public static int getLogCountMax() {
return logCountMax;
}
public static void setLogCountMax(int logCountMax) {
OnScreenLog.logCountMax = logCountMax;
logs = new String[logCountMax];
}
public int getMaxClicks() {
return maxClicks;
}
public void setMaxClicks(int maxClicks) {
this.maxClicks = maxClicks;
}
Handler timerHandler = new Handler();
Runnable rTimeout = new Runnable() {
@Override
public void run() {
cntClicks = 0;
}
};
}
その後、プロジェクトにクラスOnScreenLogを追加します。R.id.content_1は、あなたの活動のメインのLinearLayoutまたはRelativeLayoutの名前です
public class Activity1 extends AppCompatActivity {
private OnScreenLog log;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
log = new OnScreenLog(this, R.id.content_1);
log.log("Started log on Activity 1");
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), Activity2.class);
startActivity(intent);
log.log("Starting Activity 2");
Snackbar.make(view, "Starting Activity 2", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
を。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="br.com.ideiageni.onscreenlogSample.Activity1"
tools:showIn="@layout/activity_1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity 1!" />
</RelativeLayout>
どちらのソリューションは、現在のログメッセージを印刷するので、あなたはあなたの現在のログに今日ログインし、同じ情報をスクリーニングするためにログインするためにそれを伝える必要があります。
作業はまだ完了していませんが、必要のない人に使用できます。使用方法に関するいくつかの指示がありません。提案は大歓迎です。
人々はちょうど質問を読んでいない驚くべき方法。明らかに、OPは画面上にテキストの行を印刷することを望んでおり、すべての回答がロギングソリューションを指しています。ありがとうございます。 – Kyberias