提交 4325a429 编写于 作者: J jackjintai

modify:

1、兼容Android Q的取色器
上级 2b6dc906
......@@ -60,7 +60,7 @@
android:enabled="true"
android:process=":remote" />
<!-- Dokit Android Q截屏前台服务-->
<!-- Dokit targetApi为 29 Android Q时截屏的前台服务-->
<service
android:name="com.didichuxing.doraemonkit.kit.colorpick.ScreenRecorderService"
android:enabled="true"
......
......@@ -13,7 +13,7 @@ ext {
suppotrSdkVersion : "27.1.1",
applicationId : "com.didichuxing.doraemondemo",
minSdkVersion : 16,
targetSdkVersion : 28,
targetSdkVersion : 29,
//app版本号
versionCode : 224,
//dokit 插件版本号
......
......@@ -136,7 +136,7 @@ public class DataPickManager {
*/
private void realPost(final int from, String content) {
LogHelper.i(TAG, "====realPost======");
OkGo.<String>post("")
OkGo.<String>post("https://m.baidu.com/")
.params("productId", DokitConstant.PRODUCT_ID)
.params("content", content)
.execute(new StringCallback() {
......
......@@ -46,13 +46,12 @@ public class AlignRulerInfoDokitView extends AbsDokitView implements AlignRulerM
}
@Override
public void initDokitViewLayoutParams(DokitViewLayoutParams params) {
params.width = getScreenShortSideLength();
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.x = 0;
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(getContext(), 95);
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(95);
}
@Override
......
package com.didichuxing.doraemonkit.kit.colorpick;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.RequiresApi;
import android.view.LayoutInflater;
import android.view.View;
......@@ -15,10 +11,8 @@ import android.view.WindowManager;
import android.widget.FrameLayout;
import com.blankj.utilcode.util.ActivityUtils;
import com.didichuxing.doraemonkit.DoraemonKit;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.ui.base.AbsDokitView;
import com.didichuxing.doraemonkit.ui.base.DokitIntent;
import com.didichuxing.doraemonkit.ui.base.DokitViewLayoutParams;
import com.didichuxing.doraemonkit.ui.base.DokitViewManager;
import com.didichuxing.doraemonkit.ui.colorpicker.ColorPickerView;
......@@ -31,7 +25,6 @@ import com.didichuxing.doraemonkit.util.UIUtils;
*/
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class ColorPickerDokitView extends AbsDokitView {
private static final String TAG = "ColorPickerFloatPage";
private ImageCapture mImageCapture;
private ColorPickerView mPickerView;
......@@ -56,7 +49,7 @@ public class ColorPickerDokitView extends AbsDokitView {
* 当服务准备好
*/
void onScreenServiceReady() {
mImageCapture.initImageRead(getActivity(), ColorPickManager.getInstance().getMediaProjection());
mImageCapture.initImageRead(ColorPickManager.getInstance().getMediaProjection());
}
......@@ -123,18 +116,24 @@ public class ColorPickerDokitView extends AbsDokitView {
mInfoDokitView.showInfo(colorInt, startX, startY);
}
/**
* 捕捉截图信息
*/
private void captureInfo(int delay) {
getRootView().setVisibility(View.GONE);
//先隐藏拾色器控件 否则会把拾色器也截图进去
mPickerView.setVisibility(View.INVISIBLE);
getRootView().postDelayed(new Runnable() {
@Override
public void run() {
mImageCapture.capture();
getRootView().setVisibility(View.VISIBLE);
//截图完成以后恢复
mPickerView.setVisibility(View.VISIBLE);
showInfo();
}
}, delay);
}
@Override
public void onDown(int x, int y) {
super.onDown(x, y);
......
......@@ -43,7 +43,7 @@ public class ColorPickerInfoDokitView extends AbsDokitView {
params.width = getScreenShortSideLength();
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.x = 0;
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(getContext(), 95);
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(95);
}
@Override
......
......@@ -16,6 +16,7 @@ import android.nfc.Tag;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.view.View;
import com.blankj.utilcode.util.AppUtils;
import com.didichuxing.doraemonkit.DoraemonKit;
......@@ -36,9 +37,11 @@ public class ImageCapture {
private ImageReader mImageReader;
private boolean isCapturing;
private Bitmap mBitmap;
private ColorPickerDokitView mColorPickerDokitView;
public void init(Context context, Bundle bundle, ColorPickerDokitView colorPickerDokitView) throws Exception {
this.mColorPickerDokitView = colorPickerDokitView;
PackageManager packageManager = DoraemonKit.APPLICATION.getPackageManager();
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(AppUtils.getAppPackageName(), 0);
//适配Android Q
......@@ -46,25 +49,29 @@ public class ImageCapture {
if (ColorPickManager.getInstance().getMediaProjection() != null) {
colorPickerDokitView.onScreenServiceReady();
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent intent = new Intent(context, ScreenRecorderService.class);
intent.putExtra("data", bundle.getParcelable("data"));
context.startForegroundService(intent);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent intent = new Intent(context, ScreenRecorderService.class);
intent.putExtra("data", bundle.getParcelable("data"));
context.startForegroundService(intent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
mMediaProjectionManager = (MediaProjectionManager) context.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
if (mMediaProjectionManager != null) {
mMediaProjection = mMediaProjectionManager.getMediaProjection(Activity.RESULT_OK, (Intent) bundle.getParcelable("data"));
initImageRead(context, mMediaProjection);
initImageRead(mMediaProjection);
}
}
}
/**
* @param context
*
*/
void initImageRead(Context context, MediaProjection mediaProjection) {
void initImageRead(MediaProjection mediaProjection) {
if (mediaProjection == null) {
LogHelper.e(TAG, "mediaProjection == null");
return;
......@@ -73,7 +80,9 @@ public class ImageCapture {
int height = UIUtils.getRealHeightPixels();
int dpi = UIUtils.getDensityDpi();
mImageReader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);
/**
* 获取getSurface
*/
mediaProjection.createVirtualDisplay("ScreenCapture",
width, height, dpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
......
......@@ -75,8 +75,8 @@ public class RealTimePerformDataDokitView extends AbsDokitView {
public void initDokitViewLayoutParams(DokitViewLayoutParams params) {
params.width = DokitViewLayoutParams.WRAP_CONTENT;
params.height = DokitViewLayoutParams.WRAP_CONTENT;
params.x = UIUtils.dp2px(getContext(), 30);
params.y = UIUtils.dp2px(getContext(), 30);
params.x = UIUtils.dp2px(30);
params.y = UIUtils.dp2px(30);
}
@Override
......
......@@ -148,7 +148,7 @@ public class LayoutLevelDokitView extends AbsDokitView {
public void initDokitViewLayoutParams(DokitViewLayoutParams params) {
params.gravity = Gravity.CENTER_HORIZONTAL;
params.x = 0;
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(getContext(), 125);
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(125);
//解决页面跳转是view的宽度会发生变化
params.width = getScreenShortSideLength();
params.height = DokitViewLayoutParams.WRAP_CONTENT;
......
......@@ -94,7 +94,7 @@ public class SysInfoFragment extends BaseFragment {
sysInfoItems.add(new SysInfoItem(getString(R.string.dk_sysinfo_ext_storage_free), DeviceUtils.getSDCardSpace(getContext())));
sysInfoItems.add(new SysInfoItem(getString(R.string.dk_sysinfo_rom_free), DeviceUtils.getRomSpace(getContext())));
sysInfoItems.add(new SysInfoItem("ROOT", String.valueOf(DeviceUtils.isRoot(getContext()))));
sysInfoItems.add(new SysInfoItem("DENSITY", String.valueOf(UIUtils.getDensity(getContext()))));
sysInfoItems.add(new SysInfoItem("DENSITY", String.valueOf(UIUtils.getDensity())));
sysInfoItems.add(new SysInfoItem(getString(R.string.dk_sysinfo_display_size), UIUtils.getWidthPixels() + "x" + UIUtils.getRealHeightPixels()));
}
......
......@@ -57,8 +57,8 @@ public class TimeCounterDokitView extends AbsDokitView {
public void initDokitViewLayoutParams(DokitViewLayoutParams params) {
params.width = DokitViewLayoutParams.WRAP_CONTENT;
params.height = DokitViewLayoutParams.WRAP_CONTENT;
params.x = UIUtils.dp2px(getContext(), 30);
params.y = UIUtils.dp2px(getContext(), 30);
params.x = UIUtils.dp2px(30);
params.y = UIUtils.dp2px(30);
}
@Override
......
......@@ -93,7 +93,7 @@ public class ViewCheckInfoDokitView extends AbsDokitView implements
public void initDokitViewLayoutParams(DokitViewLayoutParams params) {
params.flags = DokitViewLayoutParams.FLAG_NOT_FOCUSABLE;
params.x = 0;
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(getContext(), 185);
params.y = UIUtils.getHeightPixels() - UIUtils.dp2px(185);
params.width = getScreenShortSideLength();
params.height = DokitViewLayoutParams.WRAP_CONTENT;
}
......
......@@ -26,6 +26,7 @@ import com.blankj.utilcode.util.ScreenUtils;
import com.didichuxing.doraemonkit.constant.DokitConstant;
import com.didichuxing.doraemonkit.config.FloatIconConfig;
import com.didichuxing.doraemonkit.ui.main.MainIconDokitView;
import com.didichuxing.doraemonkit.util.LogHelper;
import java.lang.ref.WeakReference;
......@@ -188,6 +189,7 @@ public abstract class AbsDokitView implements DokitView, TouchProxy.OnTouchEvent
onSystemLayoutParamsCreated(mWindowLayoutParams);
}
} catch (Exception e) {
LogHelper.e(TAG, "e===>" + e.getMessage());
e.printStackTrace();
}
......@@ -452,8 +454,14 @@ public abstract class AbsDokitView implements DokitView, TouchProxy.OnTouchEvent
}
/**
* 不能在改方法中进行dokitview的添加和删除 因为处于遍历过程在
* 只有系统模式下才会调用
* @param dokitView
*/
@Override
public void onDokitViewAdd(AbsDokitView page) {
public void onDokitViewAdd(AbsDokitView dokitView) {
}
......
......@@ -34,7 +34,7 @@ public class TouchProxy {
}
public boolean onTouchEvent(View v, MotionEvent event) {
int distance = UIUtils.dp2px(v.getContext(), 1) * MIN_DISTANCE_MOVE;
int distance = UIUtils.dp2px(1) * MIN_DISTANCE_MOVE;
int x = (int) event.getRawX();
int y = (int) event.getRawY();
switch (event.getAction()) {
......
......@@ -204,7 +204,7 @@ public class PieChart extends View {
* @param space
*/
public void setSliceSpace(float space) {
mSliceSpace = UIUtils.dp2px(getContext(), space);
mSliceSpace = UIUtils.dp2px(space);
}
/**
......@@ -213,7 +213,7 @@ public class PieChart extends View {
* @param ringWidth
*/
public void setRingWidth(float ringWidth) {
mRingWidth = UIUtils.dp2px(getContext(), ringWidth);
mRingWidth = UIUtils.dp2px(ringWidth);
}
/**
......
package com.didichuxing.doraemonkit.ui.kit;
import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.blankj.utilcode.util.LogUtils;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.datapick.DataPickManager;
import com.didichuxing.doraemonkit.ui.base.DokitViewManager;
......
......@@ -35,7 +35,7 @@ public class MainIconDokitView extends AbsDokitView {
@Override
public void onClick(View v) {
//统计入口
DataPickManager.getInstance().addData("click",1,"mainIcon");
DataPickManager.getInstance().addData("click", 1, "mainIcon");
DokitIntent dokitViewIntent = new DokitIntent(ToolPanelDokitView.class);
dokitViewIntent.mode = DokitIntent.MODE_SINGLE_INSTANCE;
DokitViewManager.getInstance().attach(dokitViewIntent);
......@@ -59,16 +59,6 @@ public class MainIconDokitView extends AbsDokitView {
params.height = FLOAT_SIZE;
}
@Override
public void onDokitViewAdd(AbsDokitView dokitView) {
if (dokitView == this) {
return;
}
DokitViewManager.getInstance().detach(this);
DokitIntent intent = new DokitIntent(MainIconDokitView.class);
intent.mode = DokitIntent.MODE_SINGLE_INSTANCE;
DokitViewManager.getInstance().attach(intent);
}
@Override
public void onResume() {
......
......@@ -54,7 +54,7 @@ public class LineRender {
public LineRender(Context context) {
mContext = context;
mPaddingBottom = UIUtils.dp2px(context, 2);
mPaddingBottom = UIUtils.dp2px(2);
}
......
......@@ -235,7 +235,7 @@ public class MyVideoView extends RelativeLayout {
isVerticalScreen = true;
ivVolume.setVisibility(View.GONE);
seekbarVolume.setVisibility(View.GONE);
setVideoViewScale(ViewGroup.LayoutParams.MATCH_PARENT, UIUtils.dp2px(mContext, 290));
setVideoViewScale(ViewGroup.LayoutParams.MATCH_PARENT, UIUtils.dp2px(290));
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
} else {
......
......@@ -30,19 +30,19 @@ import java.security.PublicKey;
public class UIUtils {
private static final String TAG = "UIUtils";
public static int dp2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
public static int dp2px(float dpValue) {
final float scale = DoraemonKit.APPLICATION.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public static float px2dp(Context context, int px) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
public static float px2dp(int px) {
DisplayMetrics displayMetrics = DoraemonKit.APPLICATION.getResources().getDisplayMetrics();
return Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
public static float getDensity(Context context) {
public static float getDensity() {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
WindowManager windowManager = (WindowManager) DoraemonKit.APPLICATION.getSystemService(Context.WINDOW_SERVICE);
if (windowManager == null) {
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册