修改速度取值,更新行车记录仪代码。
DEMO必须依附于预览获取YUV数据,不符合需求,这里先接入直播,后续需要按照源码抽离直接通过USB获取YUV的服务

Signed-off-by: donghongyu <donghongyu@zhidaoauto.com>
This commit is contained in:
donghongyu
2022-02-24 17:47:33 +08:00
parent 9df5dd5203
commit 353e8492b9
56 changed files with 2268 additions and 438 deletions

View File

@@ -0,0 +1,136 @@
package com.serenegiant.dialog;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import com.serenegiant.utils.BuildCheck;
/**
* パーミッション要求前に説明用のダイアログを表示するためのDialogFragment
*/
@SuppressWarnings("deprecation")
@Deprecated
public class MessageDialogFragment extends DialogFragment {
// private static final boolean DEBUG = false; // FIXME 実働時はfalseにすること
private static final String TAG = MessageDialogFragment.class.getSimpleName();
public static interface MessageDialogListener {
public void onMessageDialogResult(final MessageDialogFragment dialog, final int requestCode, final String[] permissions, final boolean result);
}
public static MessageDialogFragment showDialog(final Activity parent, final int requestCode, final int id_title, final int id_message, final String[] permissions) {
final MessageDialogFragment dialog = newInstance(requestCode, id_title, id_message, permissions);
dialog.show(parent.getFragmentManager(), TAG);
return dialog;
}
public static MessageDialogFragment showDialog(final Fragment parent, final int requestCode, final int id_title, final int id_message, final String[] permissions) {
final MessageDialogFragment dialog = newInstance(requestCode, id_title, id_message, permissions);
dialog.setTargetFragment(parent, parent.getId());
dialog.show(parent.getFragmentManager(), TAG);
return dialog;
}
public static MessageDialogFragment newInstance(final int requestCode, final int id_title, final int id_message, final String[] permissions) {
final MessageDialogFragment fragment = new MessageDialogFragment();
final Bundle args = new Bundle();
// ここでパラメータをセットする
args.putInt("requestCode", requestCode);
args.putInt("title", id_title);
args.putInt("message", id_message);
args.putStringArray("permissions", permissions != null ? permissions : new String[]{});
fragment.setArguments(args);
return fragment;
}
private MessageDialogListener mDialogListener;
public MessageDialogFragment() {
super();
// デフォルトコンストラクタが必要
}
@SuppressLint("NewApi")
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
// コールバックインターフェースを取得
if (activity instanceof MessageDialogListener) {
mDialogListener = (MessageDialogListener)activity;
}
if (mDialogListener == null) {
final Fragment fragment = getTargetFragment();
if (fragment instanceof MessageDialogListener) {
mDialogListener = (MessageDialogListener)fragment;
}
}
if (mDialogListener == null) {
if (BuildCheck.isAndroid4_2()) {
final Fragment target = getParentFragment();
if (target instanceof MessageDialogListener) {
mDialogListener = (MessageDialogListener)target;
}
}
}
if (mDialogListener == null) {
// Log.w(TAG, "caller activity/fragment must implement PermissionDetailDialogFragmentListener");
throw new ClassCastException(activity.toString());
}
}
// @Override
// public void onCreate(final Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// final Bundle args = savedInstanceState != null ? savedInstanceState : getArguments();
// }
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final Bundle args = savedInstanceState != null ? savedInstanceState : getArguments();
final int requestCode = getArguments().getInt("requestCode");
final int id_title = getArguments().getInt("title");
final int id_message = getArguments().getInt("message");
final String[] permissions = args.getStringArray("permissions");
return new AlertDialog.Builder(getActivity())
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(id_title)
.setMessage(id_message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int whichButton) {
// 本当はここでパーミッション要求をしたいだけどこのダイアログがdismissしてしまって結果を受け取れないので
// 呼び出し側へ返してそこでパーミッション要求する。なのでこのダイアログは単にメッセージを表示するだけ
try {
mDialogListener.onMessageDialogResult(MessageDialogFragment.this, requestCode, permissions, true);
} catch (final Exception e) {
Log.w(TAG, e);
}
}
}
)
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, int whichButton) {
try {
mDialogListener.onMessageDialogResult(MessageDialogFragment.this, requestCode, permissions, false);
} catch (final Exception e) {
Log.w(TAG, e);
}
}
}
)
.create();
}
}