Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
b67f55da
Commit
b67f55da
authored
Jan 14, 2020
by
严久程
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into feature/im_update
parents
1d5c3217
de4763ac
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
525 additions
and
131 deletions
+525
-131
TrendsListInteractor.java
m-dynamic/src/main/java/com/yidianling/dynamic/trendList/TrendsListInteractor.java
+1
-1
TrendsHomeVpAdapter.java
m-dynamic/src/main/java/com/yidianling/dynamic/trendsHome/TrendsHomeVpAdapter.java
+5
-5
TrendsContentListFragment.java
m-dynamic/src/main/java/com/yidianling/dynamic/trendsHome/content/TrendsContentListFragment.java
+66
-31
TrendsCotentListAdapter.java
m-dynamic/src/main/java/com/yidianling/dynamic/trendsHome/content/TrendsCotentListAdapter.java
+5
-1
dynamic_fragment_trend_list_in.xml
m-dynamic/src/main/res/layout/dynamic_fragment_trend_list_in.xml
+48
-47
dynamic_looper_item.xml
m-dynamic/src/main/res/layout/dynamic_looper_item.xml
+27
-25
BaiduActionDataBean.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/data/http/params/BaiduActionDataBean.kt
+5
-0
DeviceTool.java
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/DeviceTool.java
+308
-0
ActionCountUtils.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/ActionCountUtils.kt
+60
-21
No files found.
m-dynamic/src/main/java/com/yidianling/dynamic/trendList/TrendsListInteractor.java
View file @
b67f55da
...
@@ -122,7 +122,7 @@ public class TrendsListInteractor {
...
@@ -122,7 +122,7 @@ public class TrendsListInteractor {
// LogUtil.i("get Response: " + trendsListBean.toString());
// LogUtil.i("get Response: " + trendsListBean.toString());
if
(
callBack
!=
null
)
{
if
(
callBack
!=
null
)
{
//更新缓存
//更新缓存
updateCache
(
tab
,
trendsListBean
);
//
updateCache(tab,trendsListBean);
callBack
.
onTrendsListFetched
(
trendsListBean
);
callBack
.
onTrendsListFetched
(
trendsListBean
);
}
}
},
throwable
->
{
},
throwable
->
{
...
...
m-dynamic/src/main/java/com/yidianling/dynamic/trendsHome/TrendsHomeVpAdapter.java
View file @
b67f55da
...
@@ -10,7 +10,7 @@ import android.support.v4.app.FragmentPagerAdapter;
...
@@ -10,7 +10,7 @@ import android.support.v4.app.FragmentPagerAdapter;
public
class
TrendsHomeVpAdapter
extends
FragmentPagerAdapter
{
public
class
TrendsHomeVpAdapter
extends
FragmentPagerAdapter
{
public
final
static
int
dataSize
=
3
;
public
final
static
int
dataSize
=
3
;
private
Fragment
[]
mFragments
;
private
Fragment
[]
mFragments
;
private
String
[]
titles
=
new
String
[]{
private
String
[]
titles
=
new
String
[]{
"推荐"
,
"最新"
,
"关注"
,
"待回答"
,
"我回答的"
"推荐"
,
"最新"
,
"关注"
,
"待回答"
,
"我回答的"
...
@@ -25,8 +25,8 @@ public class TrendsHomeVpAdapter extends FragmentPagerAdapter {
...
@@ -25,8 +25,8 @@ public class TrendsHomeVpAdapter extends FragmentPagerAdapter {
mFragments
=
fragments
;
mFragments
=
fragments
;
}
}
public
void
setDatas
(
Fragment
[]
fragments
){
public
void
setDatas
(
Fragment
[]
fragments
)
{
mFragments
=
fragments
;
mFragments
=
fragments
;
}
}
@Override
@Override
...
@@ -39,12 +39,12 @@ public class TrendsHomeVpAdapter extends FragmentPagerAdapter {
...
@@ -39,12 +39,12 @@ public class TrendsHomeVpAdapter extends FragmentPagerAdapter {
@Override
@Override
public
int
getCount
()
{
public
int
getCount
()
{
return
mFragments
!=
null
&&
mFragments
.
length
>
0
?
mFragments
.
length
:
0
;
return
mFragments
!=
null
&&
mFragments
.
length
>
0
?
mFragments
.
length
:
0
;
}
}
@Override
@Override
public
CharSequence
getPageTitle
(
int
position
)
{
public
CharSequence
getPageTitle
(
int
position
)
{
if
(
mFragments
.
length
>
0
)
{
if
(
mFragments
.
length
>
0
)
{
return
titles
[
position
];
return
titles
[
position
];
}
}
return
super
.
getPageTitle
(
position
);
return
super
.
getPageTitle
(
position
);
...
...
m-dynamic/src/main/java/com/yidianling/dynamic/trendsHome/content/TrendsContentListFragment.java
View file @
b67f55da
...
@@ -23,7 +23,6 @@ import com.ydl.ydlcommon.base.BaseFragment;
...
@@ -23,7 +23,6 @@ import com.ydl.ydlcommon.base.BaseFragment;
import
com.ydl.ydlcommon.utils.BuryPointUtils
;
import
com.ydl.ydlcommon.utils.BuryPointUtils
;
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
;
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
;
import
com.ydl.ydlcommon.view.WrapContentLinearLayoutManager
;
import
com.ydl.ydlcommon.view.WrapContentLinearLayoutManager
;
import
com.ydl.ydlcommon.view.listener.EndlessRecyclerViewScrollListener
;
import
com.yidianling.common.tools.LogUtil
;
import
com.yidianling.common.tools.LogUtil
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.dynamic.R
;
import
com.yidianling.dynamic.R
;
...
@@ -45,6 +44,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
...
@@ -45,6 +44,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import
io.reactivex.schedulers.Schedulers
;
import
io.reactivex.schedulers.Schedulers
;
;
;
/**
/**
* @author Jim
* @author Jim
* @描述:
* @描述:
...
@@ -78,6 +78,7 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
...
@@ -78,6 +78,7 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
private
TrendsCotentListAdapter
mRcvAdapter
;
private
TrendsCotentListAdapter
mRcvAdapter
;
private
List
<
TrendsListBean
.
Trend
>
trendsDatas
;
private
List
<
TrendsListBean
.
Trend
>
trendsDatas
;
private
RecyclerView
.
OnScrollListener
mScrollListener
;
private
RecyclerView
.
OnScrollListener
mScrollListener
;
private
int
lastVisibleItem
=
0
;
public
static
TrendsContentListFragment
newInstance
(
int
tabType
,
int
topicId
,
String
trendType
,
String
trendUserid
)
{
public
static
TrendsContentListFragment
newInstance
(
int
tabType
,
int
topicId
,
String
trendType
,
String
trendUserid
)
{
TrendsContentListFragment
fragment
=
new
TrendsContentListFragment
();
TrendsContentListFragment
fragment
=
new
TrendsContentListFragment
();
...
@@ -179,36 +180,70 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
...
@@ -179,36 +180,70 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
trendsRcv
.
setAdapter
(
mRcvAdapter
);
trendsRcv
.
setAdapter
(
mRcvAdapter
);
trendsRcv
.
setLayoutManager
(
layoutManager
);
trendsRcv
.
setLayoutManager
(
layoutManager
);
trendsRcv
.
getItemAnimator
().
setChangeDuration
(
0
);
//解决局部刷新闪屏
trendsRcv
.
getItemAnimator
().
setChangeDuration
(
0
);
//解决局部刷新闪屏
mScrollListener
=
new
EndlessRecyclerViewScrollListener
(
layoutManager
)
{
mRcvAdapter
.
addFooterView
(
getFooterView
());
@Override
// mScrollListener = new DynamicRecyclerViewScrollListener(layoutManager) {
public
void
onLoadMore
(
int
page
,
int
totalItemsCount
,
@org
.
jetbrains
.
annotations
.
Nullable
RecyclerView
view
)
{
// @Override
if
(!
isRefresh
)
{
// public void onLoadMore(int page, int totalItemsCount, @org.jetbrains.annotations.Nullable RecyclerView view) {
resetState
();
// LogUtil.e("tab=" + tab + ",onLoadMore");
last_id
=
getLastId
();
// LogUtil.e("tab=" + tab + ",==数据长度:" + mRcvAdapter.getDatas().size());
LogUtil
.
i
(
"loadMore last id: "
+
last_id
+
" page: "
+
page
);
// if (!isRefresh) {
TrendsContentListFragment
.
this
.
page
++;
// resetState();
switchDataToFetch
();
// last_id = getLastId();
}
// LogUtil.i("loadMore last id: " + last_id + " page: " + page);
}
// TrendsContentListFragment.this.page++;
// switchDataToFetch();
// }
// }
//
// @Override
// protected void onScrollDown() {
// LogUtil.e("tab=" + tab + ",onScrollDown");
//// ((TrendsHomeFragment) getParentFragment()).onScrollDown();
// }
//
// @Override
// protected void onScrollUp() {
// LogUtil.e("tab=" + tab + ",onScrollUp");
//// ((TrendsHomeFragment) getParentFragment()).onScrollUp();
// }
//
// @Override
// public void onScrollTop() {
// LogUtil.e("tab=" + tab + ",onScrollTop");
//// ((TrendsHomeFragment) getParentFragment()).onScrollTop();
// }
// };
mScrollListener
=
new
RecyclerView
.
OnScrollListener
()
{
@Override
@Override
protected
void
onScrollDown
()
{
public
void
onScrollStateChanged
(
RecyclerView
recyclerView
,
int
newState
)
{
// ((TrendsHomeFragment) getParentFragment()).onScrollDown();
if
(
newState
==
RecyclerView
.
SCROLL_STATE_IDLE
)
{
}
LogUtil
.
e
(
"tab===停止滑动"
+
System
.
currentTimeMillis
());
}
@Override
if
(
newState
==
RecyclerView
.
SCROLL_STATE_IDLE
//停止滚动
protected
void
onScrollUp
()
{
&&
lastVisibleItem
>=
(
mRcvAdapter
.
getItemCount
()
-
mRcvAdapter
.
getFootersCount
())
//最后一个显示的item序号大于适配器item数量,即显示了footer
// ((TrendsHomeFragment) getParentFragment()).onScrollUp();
&&
mRcvAdapter
.
getFooterState
()
==
TrendsCotentListAdapter
.
FOOTRE_STATE_LOAD_MORE
)
{
LogUtil
.
e
(
"tab="
+
tab
+
",onLoadMore"
);
LogUtil
.
e
(
"tab="
+
tab
+
",==数据长度:"
+
mRcvAdapter
.
getDatas
().
size
());
if
(!
isRefresh
)
{
LogUtil
.
e
(
"tab===加载数据"
+
System
.
currentTimeMillis
());
last_id
=
getLastId
();
LogUtil
.
i
(
"loadMore last id: "
+
last_id
+
" page: "
+
page
);
TrendsContentListFragment
.
this
.
page
++;
switchDataToFetch
();
}
}
}
}
@Override
@Override
public
void
onScroll
Top
(
)
{
public
void
onScroll
ed
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
// ((TrendsHomeFragment) getParentFragment()).onScrollTop
();
lastVisibleItem
=
layoutManager
.
findLastVisibleItemPosition
();
}
}
};
};
trendsRcv
.
addOnScrollListener
(
mScrollListener
);
trendsRcv
.
addOnScrollListener
(
mScrollListener
);
mRcvAdapter
.
addFooterView
(
getFooterView
());
}
}
private
void
doLikeAction
(
View
view
,
int
position
,
List
<
TrendsListBean
.
Trend
>
mDatas
)
{
private
void
doLikeAction
(
View
view
,
int
position
,
List
<
TrendsListBean
.
Trend
>
mDatas
)
{
...
@@ -222,7 +257,7 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
...
@@ -222,7 +257,7 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
}
}
}
}
private
void
localData
(){
private
void
localData
()
{
if
(
mPresenter
!=
null
)
{
if
(
mPresenter
!=
null
)
{
mPresenter
.
localData
(
tab
);
mPresenter
.
localData
(
tab
);
}
}
...
@@ -297,7 +332,7 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
...
@@ -297,7 +332,7 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
}
}
SharedPreferencesEditor
.
putString
(
"trend_state"
,
""
);
SharedPreferencesEditor
.
putString
(
"trend_state"
,
""
);
LogUtil
.
d
(
"trendType "
+
trendType
);
LogUtil
.
d
(
"trendType "
+
trendType
);
localData
();
//
localData();
fetchTrendsList
();
fetchTrendsList
();
}
}
...
@@ -391,8 +426,8 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
...
@@ -391,8 +426,8 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
@Override
@Override
public
void
showBanner
(
List
<
TrendsListBean
.
Banner
>
banner
)
{
public
void
showBanner
(
List
<
TrendsListBean
.
Banner
>
banner
)
{
//更新banner数据
//更新banner数据
if
(
getParentFragment
()
instanceof
TrendsHomeFragment
){
if
(
getParentFragment
()
instanceof
TrendsHomeFragment
)
{
((
TrendsHomeFragment
)
getParentFragment
()).
setBannerData
(
banner
);
((
TrendsHomeFragment
)
getParentFragment
()).
setBannerData
(
banner
);
}
}
}
}
...
@@ -400,16 +435,16 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
...
@@ -400,16 +435,16 @@ public class TrendsContentListFragment extends BaseFragment implements ITrendsLi
public
void
showTrendsListView
(
List
<
TrendsListBean
.
Trend
>
data
)
{
public
void
showTrendsListView
(
List
<
TrendsListBean
.
Trend
>
data
)
{
isTrendsListLoading
=
false
;
isTrendsListLoading
=
false
;
showLoadSuccessView
();
showLoadSuccessView
();
if
(
page
==
1
){
if
(
page
==
1
)
{
if
(
null
==
trendsDatas
){
if
(
null
==
trendsDatas
)
{
trendsDatas
=
new
ArrayList
();
trendsDatas
=
new
ArrayList
();
}
else
{
}
else
{
trendsDatas
.
clear
();
trendsDatas
.
clear
();
}
}
if
(
null
!=
data
){
if
(
null
!=
data
)
{
trendsDatas
.
addAll
(
data
);
trendsDatas
.
addAll
(
data
);
}
}
mRcvAdapter
.
setDatas
(
trendsDatas
,
mRcvAdapter
.
FOOTRE_STATE_
INIT
);
mRcvAdapter
.
setDatas
(
trendsDatas
,
mRcvAdapter
.
FOOTRE_STATE_
LOAD_MORE
);
mRcvAdapter
.
notifyDataSetChanged
();
mRcvAdapter
.
notifyDataSetChanged
();
return
;
return
;
}
}
...
...
m-dynamic/src/main/java/com/yidianling/dynamic/trendsHome/content/TrendsCotentListAdapter.java
View file @
b67f55da
...
@@ -77,7 +77,7 @@ public class TrendsCotentListAdapter extends RecyclerView.Adapter<BaseViewHolder
...
@@ -77,7 +77,7 @@ public class TrendsCotentListAdapter extends RecyclerView.Adapter<BaseViewHolder
public
TrendsCotentListAdapter
(
Context
context
,
List
<
TrendsListBean
.
Trend
>
datas
)
{
public
TrendsCotentListAdapter
(
Context
context
,
List
<
TrendsListBean
.
Trend
>
datas
)
{
mContext
=
context
;
mContext
=
context
;
mDatas
=
datas
;
mDatas
=
datas
;
footerState
=
FOOTRE_STATE_
INIT
;
footerState
=
FOOTRE_STATE_
LOAD_MORE
;
}
}
public
void
setDatas
(
List
<
TrendsListBean
.
Trend
>
datas
)
{
public
void
setDatas
(
List
<
TrendsListBean
.
Trend
>
datas
)
{
...
@@ -89,6 +89,10 @@ public class TrendsCotentListAdapter extends RecyclerView.Adapter<BaseViewHolder
...
@@ -89,6 +89,10 @@ public class TrendsCotentListAdapter extends RecyclerView.Adapter<BaseViewHolder
this
.
footerState
=
footerState
;
this
.
footerState
=
footerState
;
}
}
public
int
getFooterState
()
{
return
footerState
;
}
public
void
addDatas
(
List
<
TrendsListBean
.
Trend
>
datas
,
int
footerState
)
{
public
void
addDatas
(
List
<
TrendsListBean
.
Trend
>
datas
,
int
footerState
)
{
this
.
footerState
=
footerState
;
this
.
footerState
=
footerState
;
if
(
mDatas
==
null
)
{
if
(
mDatas
==
null
)
{
...
...
m-dynamic/src/main/res/layout/dynamic_fragment_trend_list_in.xml
View file @
b67f55da
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/dynamic_white"
>
android:descendantFocusability=
"blocksDescendants"
android:background=
"@color/dynamic_white"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/recommend_dynamic_rcv"
<android.support.v7.widget.RecyclerView
android:layout_width=
"match_parent"
android:id=
"@+id/recommend_dynamic_rcv"
android:layout_height=
"match_parent"
android:layout_width=
"match_parent"
android:overScrollMode=
"never"
android:layout_height=
"match_parent"
android:visibility=
"visible"
/>
android:overScrollMode=
"never"
android:visibility=
"visible"
/>
<android.support.v4.widget.NestedScrollView
android:id=
"@+id/trend_no_data_rel"
<android.support.v4.widget.NestedScrollView
android:layout_width=
"match_parent"
android:id=
"@+id/trend_no_data_rel"
android:layout_height=
"match_parent"
android:layout_width=
"match_parent"
android:visibility=
"gone"
>
android:layout_height=
"match_parent"
android:visibility=
"gone"
>
<LinearLayout
android:layout_width=
"match_parent"
<LinearLayout
android:layout_height=
"match_parent"
android:layout_width=
"match_parent"
android:gravity=
"center"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
android:gravity=
"center"
android:orientation=
"vertical"
>
<ImageView
android:id=
"@+id/trend_no_data_iv"
<ImageView
android:layout_width=
"100dp"
android:id=
"@+id/trend_no_data_iv"
android:layout_height=
"100dp"
android:layout_width=
"100dp"
android:layout_marginTop=
"30dp"
android:layout_height=
"100dp"
android:layout_centerHorizontal=
"true"
android:layout_marginTop=
"30dp"
android:src=
"@drawable/dynamic_blank"
/>
android:layout_centerHorizontal=
"true"
android:src=
"@drawable/dynamic_blank"
/>
<TextView
android:id=
"@+id/trend_no_data_tv"
<TextView
android:layout_width=
"wrap_content"
android:id=
"@+id/trend_no_data_tv"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_marginTop=
"15dp"
android:layout_height=
"wrap_content"
android:text=
"暂无数据"
android:layout_marginTop=
"15dp"
android:textColor=
"@color/dynamic_text_gray"
android:text=
"暂无数据"
android:textSize=
"16sp"
/>
android:textColor=
"@color/dynamic_text_gray"
android:textSize=
"16sp"
/>
</LinearLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</FrameLayout>
</android.support.v4.widget.NestedScrollView>
</RelativeLayout>
m-dynamic/src/main/res/layout/dynamic_looper_item.xml
View file @
b67f55da
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"#F4F4F5"
>
android:background=
"#F4F4F5"
>
<TextView
<TextView
android:id=
"@+id/loop_content_before"
android:id=
"@+id/loop_content_before"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_marginLeft=
"15dp"
android:layout_marginLeft=
"15dp"
android:layout_marginTop=
"5dp"
android:layout_marginTop=
"5dp"
android:layout_marginBottom=
"5dp"
android:layout_marginRight=
"15dp"
android:layout_marginRight=
"15dp"
android:layout_marginBottom=
"5dp"
android:textColor=
"#999999"
android:background=
"@drawable/dynamic_bg_radius_white_20"
android:paddingBottom=
"5dp"
android:ellipsize=
"end"
android:paddingLeft=
"15dp"
android:maxLines=
"1"
android:paddingTop=
"5dp"
android:paddingLeft=
"15dp"
android:paddingRight=
"5dp"
android:paddingTop=
"5dp"
android:background=
"@drawable/dynamic_bg_radius_white_20"
android:paddingRight=
"5dp"
tools:text=
"置顶 xxxxxx"
/>
android:paddingBottom=
"5dp"
android:textColor=
"#999999"
</LinearLayout>
tools:text=
"置顶 xxxxxx"
/>
</LinearLayout>
ydl-platform/src/main/java/com/ydl/ydlcommon/data/http/params/BaiduActionDataBean.kt
View file @
b67f55da
...
@@ -72,6 +72,7 @@ internal class BaiduActionDataBean private constructor(builder: Builder) {
...
@@ -72,6 +72,7 @@ internal class BaiduActionDataBean private constructor(builder: Builder) {
internal
var
androidId
:
String
?
=
""
internal
var
androidId
:
String
?
=
""
internal
var
convertParam
:
String
?
=
""
internal
var
convertParam
:
String
?
=
""
internal
var
uid
:
String
?
=
""
internal
var
uid
:
String
?
=
""
internal
var
mac
:
String
?
=
""
internal
var
channel
:
String
?
=
""
internal
var
channel
:
String
?
=
""
fun
pkname
(
pkname
:
String
=
""
):
Builder
{
fun
pkname
(
pkname
:
String
=
""
):
Builder
{
...
@@ -143,6 +144,10 @@ internal class BaiduActionDataBean private constructor(builder: Builder) {
...
@@ -143,6 +144,10 @@ internal class BaiduActionDataBean private constructor(builder: Builder) {
this
.
uid
=
uid
this
.
uid
=
uid
return
this
return
this
}
}
fun
mac
(
mac
:
String
?
=
""
)
:
Builder
{
this
.
mac
=
mac
return
this
}
fun
channel
(
channel
:
String
?
=
""
)
:
Builder
{
fun
channel
(
channel
:
String
?
=
""
)
:
Builder
{
this
.
channel
=
channel
this
.
channel
=
channel
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/DeviceTool.java
View file @
b67f55da
...
@@ -6,19 +6,33 @@ import android.app.Activity;
...
@@ -6,19 +6,33 @@ import android.app.Activity;
import
android.content.ComponentName
;
import
android.content.ComponentName
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.content.res.Resources
;
import
android.content.res.Resources
;
import
android.net.ConnectivityManager
;
import
android.net.ConnectivityManager
;
import
android.net.NetworkInfo
;
import
android.net.NetworkInfo
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.net.wifi.WifiInfo
;
import
android.net.wifi.WifiManager
;
import
android.os.Build
;
import
android.os.Build
;
import
android.provider.Settings
;
import
android.provider.Settings
;
import
android.telephony.TelephonyManager
;
import
android.telephony.TelephonyManager
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
com.tbruyelle.rxpermissions2.RxPermissions
;
import
com.tbruyelle.rxpermissions2.RxPermissions
;
import
com.yidianling.common.tools.RxTool
;
import
com.yidianling.common.tools.RxTool
;
import
com.ydl.ydlcommon.BuildConfig
;
import
com.ydl.ydlcommon.BuildConfig
;
import
java.io.BufferedReader
;
import
java.io.FileReader
;
import
java.io.InputStreamReader
;
import
java.io.LineNumberReader
;
import
java.io.Reader
;
import
java.net.InetAddress
;
import
java.net.NetworkInterface
;
import
java.net.SocketException
;
import
java.util.Enumeration
;
import
static
com
.
umeng
.
socialize
.
utils
.
ContextUtil
.
getPackageName
;
import
static
com
.
umeng
.
socialize
.
utils
.
ContextUtil
.
getPackageName
;
public
class
DeviceTool
{
public
class
DeviceTool
{
...
@@ -223,4 +237,298 @@ public class DeviceTool {
...
@@ -223,4 +237,298 @@ public class DeviceTool {
return
NETWORN_NONE
;
return
NETWORN_NONE
;
}
}
public
static
String
getMac
(
Context
context
)
{
String
strMac
=
null
;
if
(
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
M
)
{
strMac
=
getLocalMacAddressFromWifiInfo
(
context
);
return
strMac
;
}
else
if
(
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
N
&&
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
strMac
=
getMacAddress
(
context
);
return
strMac
;
}
else
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
if
(!
TextUtils
.
isEmpty
(
getMacAddress
()))
{
strMac
=
getMacAddress
();
return
strMac
;
}
else
if
(!
TextUtils
.
isEmpty
(
getMachineHardwareAddress
()))
{
strMac
=
getMachineHardwareAddress
();
return
strMac
;
}
else
{
strMac
=
getLocalMacAddressFromBusybox
();
return
strMac
;
}
}
return
"02:00:00:00:00:00"
;
}
public
static
String
getLocalMacAddressFromWifiInfo
(
Context
context
)
{
WifiManager
wifi
=
(
WifiManager
)
context
.
getSystemService
(
Context
.
WIFI_SERVICE
);
WifiInfo
winfo
=
wifi
.
getConnectionInfo
();
String
mac
=
winfo
.
getMacAddress
();
return
mac
;
}
public
static
String
getMacAddress
(
Context
context
)
{
// 如果是6.0以下,直接通过wifimanager获取
if
(
Build
.
VERSION
.
SDK_INT
<
Build
.
VERSION_CODES
.
M
)
{
String
macAddress0
=
getMacAddress0
(
context
);
if
(!
TextUtils
.
isEmpty
(
macAddress0
))
{
return
macAddress0
;
}
}
String
str
=
""
;
String
macSerial
=
""
;
try
{
Process
pp
=
Runtime
.
getRuntime
().
exec
(
"cat /sys/class/net/wlan0/address"
);
InputStreamReader
ir
=
new
InputStreamReader
(
pp
.
getInputStream
());
LineNumberReader
input
=
new
LineNumberReader
(
ir
);
for
(;
null
!=
str
;
)
{
str
=
input
.
readLine
();
if
(
str
!=
null
)
{
macSerial
=
str
.
trim
();
// 去空格
break
;
}
}
}
catch
(
Exception
ex
)
{
Log
.
e
(
"----->"
+
"NetInfoManager"
,
"getMacAddress:"
+
ex
.
toString
());
}
if
(
macSerial
==
null
||
""
.
equals
(
macSerial
))
{
try
{
return
loadFileAsString
(
"/sys/class/net/eth0/address"
)
.
toUpperCase
().
substring
(
0
,
17
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
Log
.
e
(
"----->"
+
"NetInfoManager"
,
"getMacAddress:"
+
e
.
toString
());
}
}
return
macSerial
;
}
private
static
String
getMacAddress0
(
Context
context
)
{
if
(
isAccessWifiStateAuthorized
(
context
))
{
WifiManager
wifiMgr
=
(
WifiManager
)
context
.
getSystemService
(
Context
.
WIFI_SERVICE
);
WifiInfo
wifiInfo
=
null
;
try
{
wifiInfo
=
wifiMgr
.
getConnectionInfo
();
return
wifiInfo
.
getMacAddress
();
}
catch
(
Exception
e
)
{
Log
.
e
(
"----->"
+
"NetInfoManager"
,
"getMacAddress0:"
+
e
.
toString
());
}
}
return
""
;
}
/**
* Check whether accessing wifi state is permitted
*
* @param context
* @return
*/
private
static
boolean
isAccessWifiStateAuthorized
(
Context
context
)
{
if
(
PackageManager
.
PERMISSION_GRANTED
==
context
.
checkCallingOrSelfPermission
(
"android.permission.ACCESS_WIFI_STATE"
))
{
Log
.
e
(
"----->"
+
"NetInfoManager"
,
"isAccessWifiStateAuthorized:"
+
"access wifi state is enabled"
);
return
true
;
}
else
return
false
;
}
private
static
String
loadFileAsString
(
String
fileName
)
throws
Exception
{
FileReader
reader
=
new
FileReader
(
fileName
);
String
text
=
loadReaderAsString
(
reader
);
reader
.
close
();
return
text
;
}
private
static
String
loadReaderAsString
(
Reader
reader
)
throws
Exception
{
StringBuilder
builder
=
new
StringBuilder
();
char
[]
buffer
=
new
char
[
4096
];
int
readLength
=
reader
.
read
(
buffer
);
while
(
readLength
>=
0
)
{
builder
.
append
(
buffer
,
0
,
readLength
);
readLength
=
reader
.
read
(
buffer
);
}
return
builder
.
toString
();
}
/**
* 根据IP地址获取MAC地址
*
* @return
*/
public
static
String
getMacAddress
()
{
String
strMacAddr
=
null
;
try
{
// 获得IpD地址
InetAddress
ip
=
getLocalInetAddress
();
byte
[]
b
=
NetworkInterface
.
getByInetAddress
(
ip
)
.
getHardwareAddress
();
StringBuffer
buffer
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
b
.
length
;
i
++)
{
if
(
i
!=
0
)
{
buffer
.
append
(
':'
);
}
String
str
=
Integer
.
toHexString
(
b
[
i
]
&
0xFF
);
buffer
.
append
(
str
.
length
()
==
1
?
0
+
str
:
str
);
}
strMacAddr
=
buffer
.
toString
().
toUpperCase
();
}
catch
(
Exception
e
)
{
}
return
strMacAddr
;
}
/**
* 获取移动设备本地IP
*
* @return
*/
private
static
InetAddress
getLocalInetAddress
()
{
InetAddress
ip
=
null
;
try
{
// 列举
Enumeration
<
NetworkInterface
>
en_netInterface
=
NetworkInterface
.
getNetworkInterfaces
();
while
(
en_netInterface
.
hasMoreElements
())
{
// 是否还有元素
NetworkInterface
ni
=
(
NetworkInterface
)
en_netInterface
.
nextElement
();
// 得到下一个元素
Enumeration
<
InetAddress
>
en_ip
=
ni
.
getInetAddresses
();
// 得到一个ip地址的列举
while
(
en_ip
.
hasMoreElements
())
{
ip
=
en_ip
.
nextElement
();
if
(!
ip
.
isLoopbackAddress
()
&&
ip
.
getHostAddress
().
indexOf
(
":"
)
==
-
1
)
break
;
else
ip
=
null
;
}
if
(
ip
!=
null
)
{
break
;
}
}
}
catch
(
SocketException
e
)
{
e
.
printStackTrace
();
}
return
ip
;
}
/**
* 获取本地IP
*
* @return
*/
private
static
String
getLocalIpAddress
()
{
try
{
for
(
Enumeration
<
NetworkInterface
>
en
=
NetworkInterface
.
getNetworkInterfaces
();
en
.
hasMoreElements
();
)
{
NetworkInterface
intf
=
en
.
nextElement
();
for
(
Enumeration
<
InetAddress
>
enumIpAddr
=
intf
.
getInetAddresses
();
enumIpAddr
.
hasMoreElements
();
)
{
InetAddress
inetAddress
=
enumIpAddr
.
nextElement
();
if
(!
inetAddress
.
isLoopbackAddress
())
{
return
inetAddress
.
getHostAddress
().
toString
();
}
}
}
}
catch
(
SocketException
ex
)
{
ex
.
printStackTrace
();
}
return
null
;
}
public
static
String
getMachineHardwareAddress
()
{
Enumeration
<
NetworkInterface
>
interfaces
=
null
;
try
{
interfaces
=
NetworkInterface
.
getNetworkInterfaces
();
}
catch
(
SocketException
e
)
{
e
.
printStackTrace
();
}
String
hardWareAddress
=
null
;
NetworkInterface
iF
=
null
;
if
(
interfaces
==
null
)
{
return
null
;
}
while
(
interfaces
.
hasMoreElements
())
{
iF
=
interfaces
.
nextElement
();
try
{
hardWareAddress
=
bytesToString
(
iF
.
getHardwareAddress
());
if
(
hardWareAddress
!=
null
)
break
;
}
catch
(
SocketException
e
)
{
e
.
printStackTrace
();
}
}
return
hardWareAddress
;
}
/***
* byte转为String
*
* @param bytes
* @return
*/
private
static
String
bytesToString
(
byte
[]
bytes
)
{
if
(
bytes
==
null
||
bytes
.
length
==
0
)
{
return
null
;
}
StringBuilder
buf
=
new
StringBuilder
();
for
(
byte
b
:
bytes
)
{
buf
.
append
(
String
.
format
(
"%02X:"
,
b
));
}
if
(
buf
.
length
()
>
0
)
{
buf
.
deleteCharAt
(
buf
.
length
()
-
1
);
}
return
buf
.
toString
();
}
public
static
String
getLocalMacAddressFromBusybox
()
{
String
result
=
""
;
String
Mac
=
""
;
result
=
callCmd
(
"busybox ifconfig"
,
"HWaddr"
);
// 如果返回的result == null,则说明网络不可取
if
(
result
==
null
)
{
return
"网络异常"
;
}
// 对该行数据进行解析
// 例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67
if
(
result
.
length
()
>
0
&&
result
.
contains
(
"HWaddr"
)
==
true
)
{
Mac
=
result
.
substring
(
result
.
indexOf
(
"HWaddr"
)
+
6
,
result
.
length
()
-
1
);
result
=
Mac
;
}
return
result
;
}
private
static
String
callCmd
(
String
cmd
,
String
filter
)
{
String
result
=
""
;
String
line
=
""
;
try
{
Process
proc
=
Runtime
.
getRuntime
().
exec
(
cmd
);
InputStreamReader
is
=
new
InputStreamReader
(
proc
.
getInputStream
());
BufferedReader
br
=
new
BufferedReader
(
is
);
while
((
line
=
br
.
readLine
())
!=
null
&&
line
.
contains
(
filter
)
==
false
)
{
result
+=
line
;
}
result
=
line
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
result
;
}
}
}
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/ActionCountUtils.kt
View file @
b67f55da
...
@@ -48,16 +48,22 @@ class ActionCountUtils {
...
@@ -48,16 +48,22 @@ class ActionCountUtils {
count
(
eventName
,
*
sign1
,
urlStr
=
""
,
apiStr
=
""
)
count
(
eventName
,
*
sign1
,
urlStr
=
""
,
apiStr
=
""
)
}
}
fun
countUid
(
eventName
:
String
,
uid
:
String
,
vararg
sign1
:
String
)
{
fun
countUid
(
eventName
:
String
,
uid
:
String
,
vararg
sign1
:
String
)
{
count
(
eventName
,
*
sign1
,
urlStr
=
""
,
apiStr
=
""
,
uid
=
uid
)
count
(
eventName
,
*
sign1
,
urlStr
=
""
,
apiStr
=
""
,
uid
=
uid
)
}
}
fun
count
(
eventName
:
String
,
vararg
sign1
:
String
,
urlStr
:
String
=
""
,
apiStr
:
String
=
""
,
uid
:
String
=
""
)
{
fun
count
(
eventName
:
String
,
vararg
sign1
:
String
,
urlStr
:
String
=
""
,
apiStr
:
String
=
""
,
uid
:
String
=
""
)
{
var
partId
=
""
var
partId
=
""
var
position
=
""
var
position
=
""
var
userId
=
uid
var
userId
=
uid
if
(
TextUtils
.
isEmpty
(
uid
)){
if
(
TextUtils
.
isEmpty
(
uid
))
{
userId
=
ModularServiceManager
.
getPlatformUserService
()
?.
getUser
()
?.
userId
?:
""
userId
=
ModularServiceManager
.
getPlatformUserService
()
?.
getUser
()
?.
userId
?:
""
}
}
if
(
eventName
.
contains
(
"|"
))
{
if
(
eventName
.
contains
(
"|"
))
{
val
splitList
=
eventName
.
split
(
"|"
)
val
splitList
=
eventName
.
split
(
"|"
)
...
@@ -73,11 +79,25 @@ class ActionCountUtils {
...
@@ -73,11 +79,25 @@ class ActionCountUtils {
/**
/**
* 行为数据埋点调用的方法
* 行为数据埋点调用的方法
*/
*/
fun
count
(
uid
:
String
?,
partId
:
String
,
position
:
String
,
url
:
String
,
api
:
String
,
sign1
:
String
)
{
fun
count
(
uid
:
String
?,
partId
:
String
,
position
:
String
,
url
:
String
,
api
:
String
,
sign1
:
String
)
{
count
(
uid
,
partId
,
position
,
url
,
api
,
signs
=
*
arrayOf
(
sign1
))
count
(
uid
,
partId
,
position
,
url
,
api
,
signs
=
*
arrayOf
(
sign1
))
}
}
fun
count
(
uid
:
String
?,
partId
:
String
,
position
:
String
,
url
:
String
,
api
:
String
,
vararg
signs
:
String
)
{
fun
count
(
uid
:
String
?,
partId
:
String
,
position
:
String
,
url
:
String
,
api
:
String
,
vararg
signs
:
String
)
{
try
{
try
{
...
@@ -140,17 +160,25 @@ class ActionCountUtils {
...
@@ -140,17 +160,25 @@ class ActionCountUtils {
/**
/**
* 百度检测数据埋点调用的方法
* 百度检测数据埋点调用的方法
*/
*/
fun
baiduCount
(
partId
:
String
,
position
:
String
,
convertType
:
Int
)
{
fun
baiduCount
(
partId
:
String
,
position
:
String
,
convertType
:
Int
)
{
val
appFrom
=
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
val
appFrom
=
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
if
(
YDLConstants
.
FROM_YDL
!=
appFrom
){
if
(
YDLConstants
.
FROM_YDL
!=
appFrom
)
{
return
return
}
}
val
userId
=
ModularServiceManager
.
getPlatformUserService
()
?.
getUser
()
?.
userId
?:
""
val
userId
=
ModularServiceManager
.
getPlatformUserService
()
?.
getUser
()
?.
userId
?:
""
baiduCount
(
userId
,
partId
,
position
,
""
,
""
,
convertType
)
baiduCount
(
userId
,
partId
,
position
,
""
,
""
,
convertType
)
}
}
fun
baiduCount
(
uid
:
String
?,
partId
:
String
,
position
:
String
,
url
:
String
,
api
:
String
,
convertType
:
Int
)
{
fun
baiduCount
(
var
appId
=
"ydl-app-android-"
+
(
if
(
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
==
YDLConstants
.
FROM_XLZX
)
"xlzx"
else
"user"
)
uid
:
String
?,
partId
:
String
,
position
:
String
,
url
:
String
,
api
:
String
,
convertType
:
Int
)
{
var
appId
=
"ydl-app-android-"
+
(
if
(
BaseApp
.
instance
.
getGlobalConfig
().
appFrom
==
YDLConstants
.
FROM_XLZX
)
"xlzx"
else
"user"
)
try
{
try
{
val
actionDataParams
=
ActionDataBean
.
Builder
()
val
actionDataParams
=
ActionDataBean
.
Builder
()
...
@@ -185,6 +213,16 @@ class ActionCountUtils {
...
@@ -185,6 +213,16 @@ class ActionCountUtils {
baiduActionDataParams
.
network
(
DeviceTool
.
getNetworkState
(
RxTool
.
getContext
()))
baiduActionDataParams
.
network
(
DeviceTool
.
getNetworkState
(
RxTool
.
getContext
()))
baiduActionDataParams
.
convertParam
(
""
)
baiduActionDataParams
.
convertParam
(
""
)
baiduActionDataParams
.
uid
(
uid
)
baiduActionDataParams
.
uid
(
uid
)
try
{
var
mac
=
DeviceTool
.
getMac
(
BaseApp
.
getApp
())
if
(!
TextUtils
.
isEmpty
(
mac
))
{
mac
=
mac
.
replace
(
":"
,
""
)
}
com
.
ydl
.
ydlcommon
.
utils
.
LogUtil
.
d
(
"MAC=${mac}"
)
baiduActionDataParams
.
mac
(
mac
)
}
catch
(
e
:
Exception
)
{
}
baiduActionDataParams
.
channel
(
YdlCommonOut
.
getChannelName
())
baiduActionDataParams
.
channel
(
YdlCommonOut
.
getChannelName
())
val
gson
=
Gson
().
toJson
(
baiduActionDataParams
)
val
gson
=
Gson
().
toJson
(
baiduActionDataParams
)
Log
.
e
(
"Action"
,
"---------$gson"
)
Log
.
e
(
"Action"
,
"---------$gson"
)
...
@@ -206,13 +244,13 @@ class ActionCountUtils {
...
@@ -206,13 +244,13 @@ class ActionCountUtils {
fun
request
(
actionDataBean
:
ActionDataBean
)
{
fun
request
(
actionDataBean
:
ActionDataBean
)
{
try
{
try
{
ApiRequestUtil
.
actionDataCount
(
actionDataBean
)
ApiRequestUtil
.
actionDataCount
(
actionDataBean
)
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
.
subscribe
({
LogUtil
.
i
(
TAG
,
it
.
data
)
LogUtil
.
i
(
TAG
,
it
.
data
)
})
{
})
{
LogUtil
.
i
(
TAG
,
it
.
toString
())
LogUtil
.
i
(
TAG
,
it
.
toString
())
}
}
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
e
.
printStackTrace
()
}
}
...
@@ -289,7 +327,8 @@ class ActionCountUtils {
...
@@ -289,7 +327,8 @@ class ActionCountUtils {
*/
*/
private
fun
isWifi
():
Boolean
{
private
fun
isWifi
():
Boolean
{
try
{
try
{
var
connectivityManager
:
ConnectivityManager
=
RxTool
.
getContext
().
getSystemService
(
Context
.
CONNECTIVITY_SERVICE
)
as
ConnectivityManager
var
connectivityManager
:
ConnectivityManager
=
RxTool
.
getContext
().
getSystemService
(
Context
.
CONNECTIVITY_SERVICE
)
as
ConnectivityManager
var
info
:
NetworkInfo
=
connectivityManager
.
activeNetworkInfo
var
info
:
NetworkInfo
=
connectivityManager
.
activeNetworkInfo
if
(
info
!=
null
&&
info
.
type
==
ConnectivityManager
.
TYPE_WIFI
)
{
if
(
info
!=
null
&&
info
.
type
==
ConnectivityManager
.
TYPE_WIFI
)
{
return
true
return
true
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment