Compare commits
677 Commits
habu_relea
...
dev/app_cp
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ce50e32a73 | ||
![]() |
7223db9e9c | ||
![]() |
4a2a9d4400 | ||
![]() |
8049bdf6ea | ||
![]() |
c90a961e2f | ||
![]() |
892f7c3e70 | ||
![]() |
4c8182ee2f | ||
![]() |
343e73c6e3 | ||
![]() |
eabe2ae7f8 | ||
![]() |
36c011d18e | ||
![]() |
f929d78540 | ||
![]() |
8184cdd6e1 | ||
![]() |
e4d44155dc | ||
![]() |
06c974a6ed | ||
![]() |
4bfbd19b53 | ||
![]() |
61a26f0c4f | ||
![]() |
e8cfc8a13b | ||
![]() |
295de38074 | ||
![]() |
e3c5f10d02 | ||
![]() |
d949cfa7ff | ||
![]() |
e30f4fd15f | ||
![]() |
90ece5366b | ||
![]() |
555b81589c | ||
![]() |
e4cdc39ad8 | ||
![]() |
09411df1ff | ||
![]() |
9cbc6cf39f | ||
![]() |
444d043aa8 | ||
![]() |
f99d193598 | ||
![]() |
4a57bd50c5 | ||
![]() |
8a59f8a769 | ||
![]() |
2c1ecbb263 | ||
![]() |
aa2987cb0d | ||
![]() |
5e6864d87f | ||
![]() |
6aabeb3eb3 | ||
![]() |
9ff48bc500 | ||
![]() |
e9ba0b1929 | ||
![]() |
adf2adc173 | ||
![]() |
74b2d71821 | ||
![]() |
81a5c6ba65 | ||
![]() |
5f8a8113c6 | ||
![]() |
b0bf9ce98d | ||
![]() |
c3fcbc3942 | ||
![]() |
6e08f397ee | ||
![]() |
3d29568b3c | ||
![]() |
cb4dac8e81 | ||
![]() |
f58701a2d6 | ||
![]() |
654bc45c8c | ||
![]() |
87a36d796c | ||
![]() |
0bc1023c99 | ||
![]() |
154e688673 | ||
![]() |
a91dee592d | ||
![]() |
7ef78bc3e1 | ||
![]() |
b5bcd9cb5f | ||
![]() |
de7eb25045 | ||
![]() |
029b7fcf96 | ||
![]() |
23a3858a2c | ||
![]() |
67044ded6b | ||
![]() |
3e6d34a986 | ||
![]() |
e7ca237a3e | ||
![]() |
e26d548515 | ||
![]() |
539be23e47 | ||
![]() |
dcafb35e24 | ||
![]() |
8fa429aca6 | ||
![]() |
f08b6d4577 | ||
![]() |
3ea7aecd5c | ||
![]() |
178f4e24ef | ||
![]() |
e2861459fb | ||
![]() |
d704a44106 | ||
![]() |
da81a4e905 | ||
![]() |
6c081d9a38 | ||
![]() |
37d897035f | ||
![]() |
cea25c7497 | ||
![]() |
47d2bfd145 | ||
![]() |
047e1454bd | ||
![]() |
714d5baec6 | ||
![]() |
b20ee8064c | ||
![]() |
711135ae90 | ||
![]() |
ecf42e368e | ||
![]() |
205e1180e7 | ||
![]() |
bc48cc86a9 | ||
![]() |
e7b73a2961 | ||
![]() |
5070e21d16 | ||
![]() |
049006aa8b | ||
![]() |
86b498c00e | ||
![]() |
6df95cf11f | ||
![]() |
3b407c0bd6 | ||
![]() |
83af08076a | ||
![]() |
cdc1c51fec | ||
![]() |
a8191616a3 | ||
![]() |
410832690f | ||
![]() |
b1d2f0515b | ||
![]() |
82c2d8c25d | ||
![]() |
549088c99e | ||
![]() |
5910e7c5fd | ||
![]() |
53aed7599a | ||
![]() |
8aebb7c2c2 | ||
![]() |
3a120bf5f0 | ||
![]() |
2a0d8f06fa | ||
![]() |
495bae0d00 | ||
![]() |
2af7cec8dd | ||
![]() |
e9e4da8d60 | ||
![]() |
14c1805a2b | ||
![]() |
066fc4056b | ||
![]() |
f8ad0d3961 | ||
![]() |
0d974866c8 | ||
![]() |
b4f3c4f3e3 | ||
![]() |
f74b744f56 | ||
![]() |
b8f73ec0d5 | ||
![]() |
3ff80994f1 | ||
![]() |
c1426b39c4 | ||
![]() |
3b28974919 | ||
![]() |
63a28bc142 | ||
![]() |
729d626006 | ||
![]() |
a407268be1 | ||
![]() |
f4808e8acf | ||
![]() |
3e49dae43b | ||
![]() |
35d53ccdb2 | ||
![]() |
2a20d75ffd | ||
![]() |
5f157d8454 | ||
![]() |
5fbee068dc | ||
![]() |
046c7d66cd | ||
![]() |
accf4562b1 | ||
![]() |
5b90524144 | ||
![]() |
1284a6e8a2 | ||
![]() |
afdf3093a1 | ||
![]() |
843a37ed97 | ||
![]() |
f99c6d8b37 | ||
![]() |
7add521040 | ||
![]() |
b673f5603f | ||
![]() |
a4f9559ad9 | ||
![]() |
3226109442 | ||
![]() |
3c60225e35 | ||
![]() |
0a70c6a478 | ||
![]() |
16a8f9a52a | ||
![]() |
2a1983aa46 | ||
![]() |
eb187ebc56 | ||
![]() |
f4ef62d2d6 | ||
![]() |
49a10d9f40 | ||
![]() |
42b47fcb64 | ||
![]() |
709b0b0274 | ||
![]() |
b6d59b5986 | ||
![]() |
ef80b15f27 | ||
![]() |
c14d376a1a | ||
![]() |
7f8cd70d99 | ||
![]() |
d2a686f572 | ||
![]() |
693a14d6cf | ||
![]() |
cf078ebc5b | ||
![]() |
408fe443f4 | ||
![]() |
442bd1f238 | ||
![]() |
4eed4c0cfb | ||
![]() |
bf3ea4b437 | ||
![]() |
f161a8e96b | ||
![]() |
574f290004 | ||
![]() |
a46b5b4f32 | ||
![]() |
936dd2f8e8 | ||
![]() |
9d0b6e3a9f | ||
![]() |
14fa576814 | ||
![]() |
9d14936d9c | ||
![]() |
3dec68b1fc | ||
![]() |
3c75f0e86a | ||
![]() |
0caee6e191 | ||
![]() |
b9f87b4984 | ||
![]() |
2b22fb3d4c | ||
![]() |
d80128f217 | ||
![]() |
57a7bee15d | ||
![]() |
677eb4327b | ||
![]() |
d8815a23e7 | ||
![]() |
a7faa20321 | ||
![]() |
612bd50545 | ||
![]() |
3187bc0d37 | ||
![]() |
48d2bc88b8 | ||
![]() |
168c0eab09 | ||
![]() |
d1fc37aa24 | ||
![]() |
94cebe457a | ||
![]() |
6e8f69d273 | ||
![]() |
80d852114c | ||
![]() |
634adc5f19 | ||
![]() |
3408f444aa | ||
![]() |
95f65558a4 | ||
![]() |
fbb7d20f3d | ||
![]() |
12edababcd | ||
![]() |
97949c4828 | ||
![]() |
78fa5751a6 | ||
![]() |
a6798cf35d | ||
![]() |
89940edd58 | ||
![]() |
fb202c1c73 | ||
![]() |
840a1243aa | ||
![]() |
2019411763 | ||
![]() |
e0e07c718a | ||
![]() |
02595f81f7 | ||
![]() |
95d0527fc9 | ||
![]() |
bc3426c574 | ||
![]() |
a2976dbc74 | ||
![]() |
e942696e14 | ||
![]() |
7c3dee48ae | ||
![]() |
eabb3a5bd3 | ||
![]() |
fbc76a0bd3 | ||
![]() |
d044756bd7 | ||
![]() |
8ad993bb6b | ||
![]() |
f325df4ed0 | ||
![]() |
19cbd94e98 | ||
![]() |
85b9ce903f | ||
![]() |
408ec3f811 | ||
![]() |
cafeee5305 | ||
![]() |
818acaee8f | ||
![]() |
e72423708e | ||
![]() |
5ba98cdb9e | ||
![]() |
13d87309e1 | ||
![]() |
dc5d160086 | ||
![]() |
7dca9a1ed5 | ||
![]() |
fc2c2433aa | ||
![]() |
7aeb80599d | ||
![]() |
53b7bb87f1 | ||
![]() |
994f0900a7 | ||
![]() |
764227edcd | ||
![]() |
640d59d4f5 | ||
![]() |
11bc8068bd | ||
![]() |
bc8f1a6660 | ||
![]() |
93fc9d2fef | ||
![]() |
2d9c152bd6 | ||
![]() |
0e3d9695f9 | ||
![]() |
1acbead001 | ||
![]() |
b25276875b | ||
![]() |
6de2f68106 | ||
![]() |
7ff35b1a50 | ||
![]() |
0c4df905e3 | ||
![]() |
aa0baeccf1 | ||
![]() |
8a66c4bdb8 | ||
![]() |
5c262c93c9 | ||
![]() |
2b0e52ac20 | ||
![]() |
d2d738f618 | ||
![]() |
cdbb895a68 | ||
![]() |
a6f5b24a6d | ||
![]() |
126215949f | ||
![]() |
92a0e4b408 | ||
![]() |
5be8ebde3a | ||
![]() |
2396eb9089 | ||
![]() |
65ef4810e3 | ||
![]() |
c72af689e5 | ||
![]() |
c8f83b4ad8 | ||
![]() |
088756891e | ||
![]() |
e2ad02e8a6 | ||
![]() |
8f4fd9bf7e | ||
![]() |
e998245340 | ||
![]() |
ac212c4949 | ||
![]() |
115d0d3a01 | ||
![]() |
2aef4076ef | ||
![]() |
ded1072961 | ||
![]() |
37eaf9d08d | ||
![]() |
17a56f4c65 | ||
![]() |
89b381bfbc | ||
![]() |
58f1002b4e | ||
![]() |
8475180048 | ||
![]() |
4903a3f9a8 | ||
![]() |
6b6e72ff25 | ||
![]() |
9d96b25208 | ||
![]() |
494628918d | ||
![]() |
6229ba57be | ||
![]() |
cab7e3542e | ||
![]() |
a62278ed30 | ||
![]() |
3d707b19db | ||
![]() |
21d982246c | ||
![]() |
21f0a84904 | ||
![]() |
92070af5e8 | ||
![]() |
6ca5589efc | ||
![]() |
d472d671ba | ||
![]() |
9a7c41b6b2 | ||
![]() |
d3b3ce8be2 | ||
![]() |
812061a601 | ||
![]() |
c666c39769 | ||
![]() |
1b09c46bfc | ||
![]() |
37b91c22cb | ||
![]() |
e500d7a01f | ||
![]() |
cab220d917 | ||
![]() |
70040c5ee1 | ||
![]() |
7576b30ae7 | ||
![]() |
dc1ae42fa1 | ||
![]() |
42c82e1c0b | ||
![]() |
70d0049477 | ||
![]() |
0eeb9cd105 | ||
![]() |
e5b2e3f5e7 | ||
![]() |
a7076f7bc8 | ||
![]() |
54c07468d5 | ||
![]() |
8135142287 | ||
![]() |
5a067ec0fd | ||
![]() |
e377a51094 | ||
![]() |
01093d39c5 | ||
![]() |
e386c0cf58 | ||
![]() |
fffb78a9f6 | ||
![]() |
209ebabd34 | ||
![]() |
5697be0ba9 | ||
![]() |
de6d892df5 | ||
![]() |
f21e14ca5b | ||
![]() |
c4c03edc5f | ||
![]() |
72863b8bde | ||
![]() |
9be483de4b | ||
![]() |
bf3098d5c3 | ||
![]() |
94f33e2fa7 | ||
![]() |
a54b7967c9 | ||
![]() |
bd00bb7e91 | ||
![]() |
a86950f80a | ||
![]() |
ca8f581c69 | ||
![]() |
7c8685d652 | ||
![]() |
89065de00f | ||
![]() |
338bedb0e0 | ||
![]() |
6635167a30 | ||
![]() |
7c23f5e24b | ||
![]() |
d51aba4908 | ||
![]() |
2a3aa0a77e | ||
![]() |
ff25fd4ded | ||
![]() |
d7be587078 | ||
![]() |
9f7187e7ae | ||
![]() |
7f38169684 | ||
![]() |
3bc264cccb | ||
![]() |
912ef11d1b | ||
![]() |
62679db186 | ||
![]() |
ea92c08ca1 | ||
![]() |
9ae80b839b | ||
![]() |
01f3418f43 | ||
![]() |
5e634b1fda | ||
![]() |
32ac09ef60 | ||
![]() |
ae4dea2ab0 | ||
![]() |
f76582b1f6 | ||
![]() |
f121ef5ad1 | ||
![]() |
a7a04c2950 | ||
![]() |
af0ba80b30 | ||
![]() |
c986a2dce6 | ||
![]() |
376fbdaeb2 | ||
![]() |
7fd10e1222 | ||
![]() |
edb8c962cd | ||
![]() |
378ea3802d | ||
![]() |
04f434531c | ||
![]() |
a18b0d3f4d | ||
![]() |
58c298bbd6 | ||
![]() |
35bc665f03 | ||
![]() |
414a248418 | ||
![]() |
22b45993e4 | ||
![]() |
2af211457b | ||
![]() |
29a62a034d | ||
![]() |
a2980914e8 | ||
![]() |
920b159820 | ||
![]() |
6e37bd9c68 | ||
![]() |
1d399777b1 | ||
![]() |
3626d5708a | ||
![]() |
ebd9ddd8de | ||
![]() |
20497cb2b7 | ||
![]() |
61bb91920d | ||
![]() |
6a30060bf9 | ||
![]() |
76abafe1cc | ||
![]() |
6256151928 | ||
![]() |
3d59e7f244 | ||
![]() |
66f8a527f9 | ||
![]() |
57d0852d14 | ||
![]() |
38b0af2f35 | ||
![]() |
062c2ee0a9 | ||
![]() |
4ff5ca40e3 | ||
![]() |
ad543ccbbc | ||
![]() |
2d8f3939ee | ||
![]() |
e43b3348bf | ||
![]() |
8f552d6663 | ||
![]() |
a7c528fff1 | ||
![]() |
afc1d5ef69 | ||
![]() |
4a3c8cbdac | ||
![]() |
1c9c084c3e | ||
![]() |
39cd73b021 | ||
![]() |
f6e5017fbb | ||
![]() |
8562768556 | ||
![]() |
7d6f0c360b | ||
![]() |
e635f69b1f | ||
![]() |
66e9a1442e | ||
![]() |
30036526bd | ||
![]() |
de71c445c1 | ||
![]() |
088d27c51c | ||
![]() |
42007aa075 | ||
![]() |
bc441a8ac2 | ||
![]() |
5b9ada0902 | ||
![]() |
5f441aa8eb | ||
![]() |
9e8a95c1d6 | ||
![]() |
ac14be2c88 | ||
![]() |
e334c7ce16 | ||
![]() |
32b0fba6fb | ||
![]() |
d9a39877f1 | ||
![]() |
681bd8bca9 | ||
![]() |
fc62f8cd28 | ||
![]() |
696dc32234 | ||
![]() |
99e85366b3 | ||
![]() |
70785fdf47 | ||
![]() |
b353105ca2 | ||
![]() |
62dc2e3c9d | ||
![]() |
9c63c56488 | ||
![]() |
d3b16529e1 | ||
![]() |
d73770cfe2 | ||
![]() |
191990426a | ||
![]() |
87052c52c1 | ||
![]() |
568a42799d | ||
![]() |
c0663e4aa8 | ||
![]() |
a8e7634920 | ||
![]() |
8d292ccac0 | ||
![]() |
b81f0c0808 | ||
![]() |
b354931ed2 | ||
![]() |
f538dde6da | ||
![]() |
a37ff5d9b8 | ||
![]() |
f675e3e085 | ||
![]() |
63553473bf | ||
![]() |
15f8ae439b | ||
![]() |
f73b56726a | ||
![]() |
cbca06b03d | ||
![]() |
9b0168f614 | ||
![]() |
70b9e5cbdd | ||
![]() |
f95f8fb0f5 | ||
![]() |
8b90c472e3 | ||
![]() |
c924a2b2ac | ||
![]() |
e7d2c0cf75 | ||
![]() |
5946726d0b | ||
![]() |
ca266841ac | ||
![]() |
5c9ad5b2fb | ||
![]() |
68e6d2aa15 | ||
![]() |
fcecc29add | ||
![]() |
81ba536dba | ||
![]() |
3bf1af2c0b | ||
![]() |
48de4c765b | ||
![]() |
eb6fb9b2da | ||
![]() |
5cf07b86b3 | ||
![]() |
0fce835c0c | ||
![]() |
dcbd5aae25 | ||
![]() |
b5541afc5d | ||
![]() |
25e0c29dbc | ||
![]() |
46c6ee3e99 | ||
![]() |
6277322ebe | ||
![]() |
a8bc86b5aa | ||
![]() |
291f85c310 | ||
![]() |
26ea3dbfd5 | ||
![]() |
14a70f29c8 | ||
![]() |
96174fbfeb | ||
![]() |
492b5f7263 | ||
![]() |
408afcebcb | ||
![]() |
18904e853e | ||
![]() |
61ac515cf9 | ||
![]() |
c47281401e | ||
![]() |
58abce7456 | ||
![]() |
fdd6f1836f | ||
![]() |
5928151853 | ||
![]() |
c4cc6153df | ||
![]() |
ecdeee3e76 | ||
![]() |
a39a11343c | ||
![]() |
c5d0b80f1b | ||
![]() |
520efa04f8 | ||
![]() |
5b1b469316 | ||
![]() |
7ce3990728 | ||
![]() |
542e12a88b | ||
![]() |
7373093946 | ||
![]() |
792b140f0f | ||
![]() |
c64d74aa7d | ||
![]() |
73f24839d4 | ||
![]() |
9a532c5c3f | ||
![]() |
1b74aa08ce | ||
![]() |
831d219f36 | ||
![]() |
6858130a7e | ||
![]() |
db9077fbbc | ||
![]() |
e67ab3c1b3 | ||
![]() |
df0b246062 | ||
![]() |
bf133e5dc6 | ||
![]() |
b4f26d324c | ||
![]() |
4a2618a76b | ||
![]() |
1b56fd075b | ||
![]() |
f1586fb0ac | ||
![]() |
66aa5a5671 | ||
![]() |
52bfc9636b | ||
![]() |
7c0665b9ce | ||
![]() |
ecb3c46407 | ||
![]() |
6ce3a64ea3 | ||
![]() |
408ec37ff2 | ||
![]() |
ecdbf9e9c3 | ||
![]() |
d8ae8a559d | ||
![]() |
2f8511ca16 | ||
![]() |
7e6c8bc4d3 | ||
![]() |
30c63dd35d | ||
![]() |
40b54bdf53 | ||
![]() |
7bdbae1d9e | ||
![]() |
30dbebc696 | ||
![]() |
d3c70fa0d9 | ||
![]() |
bc5a20263c | ||
![]() |
2205c59d69 | ||
![]() |
a7f8c413d6 | ||
![]() |
2c098a9092 | ||
![]() |
e547fff367 | ||
![]() |
b7951341b2 | ||
![]() |
30d81ebbfd | ||
![]() |
3cb2267032 | ||
![]() |
85dcb4806e | ||
![]() |
40a93939ad | ||
![]() |
98b66940e5 | ||
![]() |
7b4bb010bf | ||
![]() |
9bc58277aa | ||
![]() |
5a69f092a2 | ||
![]() |
1873359e36 | ||
![]() |
eae1539375 | ||
![]() |
c49d8c0f0c | ||
![]() |
642b0cc1fc | ||
![]() |
9850069824 | ||
![]() |
038aded819 | ||
![]() |
bffe6916e9 | ||
![]() |
9bb7ee73f5 | ||
![]() |
81769854ee | ||
![]() |
614b5ad042 | ||
![]() |
da86497b95 | ||
![]() |
c37635d6d1 | ||
![]() |
1a1d2cf46c | ||
![]() |
a686dcc19d | ||
![]() |
1ffd596ab2 | ||
![]() |
4c01a2eb2c | ||
![]() |
93ebf4f8e1 | ||
![]() |
c264a25d66 | ||
![]() |
44c76eb00d | ||
![]() |
36d80dc7f0 | ||
![]() |
6905425adb | ||
![]() |
79aa0754d5 | ||
![]() |
abad8212a5 | ||
![]() |
f4626dc8b7 | ||
![]() |
f383b23ad9 | ||
![]() |
e31545ddb0 | ||
![]() |
b9d090cd25 | ||
![]() |
c55b1ba737 | ||
![]() |
a93f3acdc9 | ||
![]() |
500d5ca1a8 | ||
![]() |
fdfa571d16 | ||
![]() |
8c14c2e1ab | ||
![]() |
b999193f42 | ||
![]() |
1c1eb1c959 | ||
![]() |
1b02f13ea2 | ||
![]() |
96e7b58446 | ||
![]() |
3b3b3cea18 | ||
![]() |
a1144d47c8 | ||
![]() |
4bd9865ac2 | ||
![]() |
9f0b36b951 | ||
![]() |
7a4a9cf7ea | ||
![]() |
beb5b04ad9 | ||
![]() |
5a92e5c564 | ||
![]() |
5a264ef629 | ||
![]() |
44596de033 | ||
![]() |
09f7c47bea | ||
![]() |
3cf3a59a3e | ||
![]() |
873467cbbc | ||
![]() |
ec0e0046bd | ||
![]() |
22439f478a | ||
![]() |
7e8e2d93e7 | ||
![]() |
c89029afe8 | ||
![]() |
bc3555d36c | ||
![]() |
1e2e40a462 | ||
![]() |
798949bce2 | ||
![]() |
1324412250 | ||
![]() |
3937aac9d9 | ||
![]() |
5d9ff675a7 | ||
![]() |
ac76027eca | ||
![]() |
e633943a74 | ||
![]() |
873ab6071d | ||
![]() |
d2bf4ae00d | ||
![]() |
9a438f1b6b | ||
![]() |
db900d6d63 | ||
![]() |
cc285b5832 | ||
![]() |
f6c2354f4c | ||
![]() |
90a9b52551 | ||
![]() |
ecfe005606 | ||
![]() |
c8a23a1532 | ||
![]() |
9ac08da9f1 | ||
![]() |
00f025a8c5 | ||
![]() |
103f6a2744 | ||
![]() |
c68c254073 | ||
![]() |
609386f668 | ||
![]() |
aa28ad2513 | ||
![]() |
03a101d8f7 | ||
![]() |
ef1c12d14b | ||
![]() |
089249a5da | ||
![]() |
07417877f7 | ||
![]() |
6b98da175d | ||
![]() |
0c36bfe7eb | ||
![]() |
16348e44d8 | ||
![]() |
6c73ac79c4 | ||
![]() |
9858dbb0f2 | ||
![]() |
50333f5a66 | ||
![]() |
64b7a0a808 | ||
![]() |
3d73cae162 | ||
![]() |
fa33b1d53f | ||
![]() |
6fc4b7528d | ||
![]() |
ede0acb1de | ||
![]() |
93f3a6d87f | ||
![]() |
10f0c71ad7 | ||
![]() |
60ecb4f58e | ||
![]() |
40b4c45fcf | ||
![]() |
d44a10b8dd | ||
![]() |
e14f76cb47 | ||
![]() |
62c5aa8bd8 | ||
![]() |
7a5a706745 | ||
![]() |
0ce739db30 | ||
![]() |
5bda23c293 | ||
![]() |
efef976125 | ||
![]() |
615e0d7427 | ||
![]() |
6cde3bd66d | ||
![]() |
dcf30b9e13 | ||
![]() |
f0ec5c059d | ||
![]() |
404951a428 | ||
![]() |
129af8f574 | ||
![]() |
4dba696ee3 | ||
![]() |
2f895274eb | ||
![]() |
339fb12490 | ||
![]() |
d9c84e1ac7 | ||
![]() |
4c80cda20a | ||
![]() |
be14ac50e1 | ||
![]() |
0bd3686cd2 | ||
![]() |
568bf9b786 | ||
![]() |
c28ecebf71 | ||
![]() |
624349ea7b | ||
![]() |
780613ee56 | ||
![]() |
5f2dce29e1 | ||
![]() |
a51813e706 | ||
![]() |
9828bd433d | ||
![]() |
ced0ceb6e3 | ||
![]() |
729a73ef54 | ||
![]() |
066bcde63c | ||
![]() |
f430241d9f | ||
![]() |
7fc1285ad7 | ||
![]() |
892ac6b8f9 | ||
![]() |
897c4ce34d | ||
![]() |
2e6d3502ea | ||
![]() |
84b6a40e93 | ||
![]() |
c311ab96ac | ||
![]() |
a274271dd8 | ||
![]() |
fefcc5260a | ||
![]() |
99451e9bc4 | ||
![]() |
c4631f2143 | ||
![]() |
75d662204a | ||
![]() |
1fc37eb85d | ||
![]() |
bc3097f412 | ||
![]() |
4f24fed67f | ||
![]() |
e1b7a5464d | ||
![]() |
f5ba7b3f22 | ||
![]() |
81da986e04 | ||
![]() |
85dff2ac90 | ||
![]() |
7b773d0558 | ||
![]() |
46ba8d2db3 | ||
![]() |
5d54acd01d | ||
![]() |
c7ff6f0524 | ||
![]() |
45ab9ac463 | ||
![]() |
5287533ee8 | ||
![]() |
9cacea3ef4 | ||
![]() |
c4eacb63d9 | ||
![]() |
157d71edcd | ||
![]() |
95ab273750 | ||
![]() |
a7ba26a85b | ||
![]() |
7291b61e44 | ||
![]() |
034185d13b | ||
![]() |
39a9e277bd | ||
![]() |
b11b6928c5 | ||
![]() |
41c00cadcd | ||
![]() |
4cbc12487b | ||
![]() |
345cf1a112 | ||
![]() |
7cb27f61b1 | ||
![]() |
865dbb09b6 | ||
![]() |
a38190e2f9 | ||
![]() |
ef5e0a8f59 | ||
![]() |
774965a2ec | ||
![]() |
0d488877c8 | ||
![]() |
b647785244 | ||
![]() |
9063aee884 | ||
![]() |
a3f2f1324c | ||
![]() |
fe3347fd00 | ||
![]() |
e97f5b3953 | ||
![]() |
72f12588c0 | ||
![]() |
995278f44f | ||
![]() |
382eeb3a89 | ||
![]() |
9462b4a1be | ||
![]() |
cfdb30b1d5 | ||
![]() |
b598d6d3a6 | ||
![]() |
ab08a85a2a | ||
![]() |
2b79b7ae6a | ||
![]() |
7e05a6514f | ||
![]() |
ee28779a01 |
BIN
ananplay.jks
@@ -1,34 +0,0 @@
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
android {
|
||||
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion MIN_SDK_VERSION.toInteger()
|
||||
targetSdkVersion TARGET_SDK_VERSION.toInteger()
|
||||
|
||||
testApplicationId 'com.soundcloud.android.crop.test'
|
||||
testInstrumentationRunner 'android.test.InstrumentationTestRunner'
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
buildToolsVersion = '30.0.3'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api 'androidx.annotation:annotation:1.4.0'
|
||||
api 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation "androidx.core:core-ktx:1.7.0"
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||
}
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
@@ -1 +0,0 @@
|
||||
<manifest package="com.soundcloud.android.crop" />
|
@@ -1,48 +0,0 @@
|
||||
package com.soundcloud.android.crop;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class UriUtil {
|
||||
|
||||
public final static String getFileProviderName(Context context){
|
||||
return context.getPackageName()+".fileprovider";
|
||||
}
|
||||
|
||||
/**
|
||||
* 将TakePhoto 提供的Uri 解析出文件绝对路径
|
||||
*
|
||||
* @param uri
|
||||
* @return
|
||||
*/
|
||||
public static String parseOwnUri(Context context, Uri uri) {
|
||||
if (uri == null) return null;
|
||||
String path;
|
||||
if (TextUtils.equals(uri.getAuthority(), getFileProviderName(context))) {
|
||||
String target_text_camera_photos = "camera_photos/";
|
||||
if (uri.getPath() != null && uri.getPath().contains(target_text_camera_photos)) {
|
||||
path = new File(uri.getPath().replace(target_text_camera_photos, ""))
|
||||
.getAbsolutePath();
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
path = new File(Environment.getExternalStorageDirectory(),
|
||||
uri.getPath())
|
||||
.getAbsolutePath();
|
||||
} else {
|
||||
path = uri.getPath();
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
path = uri.getPath();
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
}
|
Before Width: | Height: | Size: 76 B |
Before Width: | Height: | Size: 204 B |
Before Width: | Height: | Size: 194 B |
Before Width: | Height: | Size: 76 B |
Before Width: | Height: | Size: 160 B |
Before Width: | Height: | Size: 168 B |
Before Width: | Height: | Size: 83 B |
Before Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 268 B |
Before Width: | Height: | Size: 52 B |
@@ -1,10 +0,0 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<string name="crop__saving">正在儲存相片…</string>
|
||||
<string name="crop__wait">請稍候…</string>
|
||||
<string name="crop__pick_error">沒有可用的圖片來源</string>
|
||||
|
||||
<string name="crop__done">完成</string>
|
||||
<string name="crop__cancel" tools:ignore="ButtonCase">取消</string>
|
||||
|
||||
</resources>
|
@@ -1,44 +0,0 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<style name="Crop"></style>
|
||||
|
||||
<style name="Crop.DoneCancelBar">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">@dimen/crop__bar_height</item>
|
||||
<item name="android:orientation">horizontal</item>
|
||||
<item name="android:divider">@drawable/crop__divider</item>
|
||||
<item name="android:showDividers" tools:ignore="NewApi">middle</item>
|
||||
<item name="android:dividerPadding" tools:ignore="NewApi">12dp</item>
|
||||
<item name="android:background">@color/crop__button_bar</item>
|
||||
</style>
|
||||
|
||||
<style name="Crop.ActionButton">
|
||||
<item name="android:layout_width">0dp</item>
|
||||
<item name="android:layout_height">match_parent</item>
|
||||
<item name="android:layout_weight">1</item>
|
||||
<item name="android:background">@drawable/crop__selectable_background</item>
|
||||
</style>
|
||||
|
||||
<style name="Crop.ActionButtonText">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:paddingRight">20dp</item> <!-- Offsets left drawable -->
|
||||
<item name="android:drawablePadding">8dp</item>
|
||||
<item name="android:textColor">@color/crop__button_text</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="android:textSize">13sp</item>
|
||||
</style>
|
||||
|
||||
<style name="Crop.ActionButtonText.Done">
|
||||
<item name="android:drawableLeft">@drawable/crop__ic_done</item>
|
||||
<item name="android:text">@string/crop__done</item>
|
||||
</style>
|
||||
|
||||
<style name="Crop.ActionButtonText.Cancel">
|
||||
<item name="android:drawableLeft">@drawable/crop__ic_cancel</item>
|
||||
<item name="android:text">@string/crop__cancel</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
0
app/aab-res-guard-mapping.txt
Normal file
860
app/build.gradle
212
app/proguard-rules.pro
vendored
@@ -116,20 +116,15 @@
|
||||
-dontwarn com.netease.**
|
||||
-keep class com.netease.** {*;}
|
||||
|
||||
# Presenter 相关
|
||||
-keep class com.yizhuan.habu.base.** { *; }
|
||||
-keep public class * extends com.yizhuan.habu.base.BaseMvpPresenter
|
||||
-keep public class * extends com.yizhuan.xchat_android_library.base.factory.AbstractMvpPresenter
|
||||
|
||||
# 云信自定义 ViewHolder 配置
|
||||
-dontwarn com.yizhuan.habu.ui.im.recent.holder.**
|
||||
-keep class com.yizhuan.habu.ui.im.recent.holder.** {*;}
|
||||
-keep class com.yizhuan.habu.ui.im.chat.** {*;}
|
||||
-keep class com.yizhuan.habu.luckymoney.viewholder.** {*;}
|
||||
-keep class com.yizhuan.habu.share.viewholder.** {*;}
|
||||
-keep class com.yizhuan.habu.public_chat_hall.msg.viewholder.** {*;}
|
||||
-keep class com.yizhuan.habu.module_hall.im.msgholder.** {*;}
|
||||
-keep class com.yizhuan.habu.mentoring_relationship.viewholder.** {*;}
|
||||
-dontwarn com.chwl.app.ui.im.recent.holder.**
|
||||
-keep class com.chwl.app.ui.im.recent.holder.** {*;}
|
||||
-keep class com.chwl.app.ui.im.chat.** {*;}
|
||||
-keep class com.chwl.app.luckymoney.viewholder.** {*;}
|
||||
-keep class com.chwl.app.share.viewholder.** {*;}
|
||||
-keep class com.chwl.app.public_chat_hall.msg.viewholder.** {*;}
|
||||
-keep class com.chwl.app.module_hall.im.msgholder.** {*;}
|
||||
-keep class com.chwl.app.mentoring_relationship.viewholder.** {*;}
|
||||
-keep public class * extends com.netease.nim.uikit.common.ui.recyclerview.holder.RecyclerViewHolder {*;}
|
||||
-keep public class * extends com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase {*;}
|
||||
|
||||
@@ -177,8 +172,8 @@
|
||||
-keep class com.darsh.multipleimageselect.** { *; }
|
||||
-dontwarn com.darsh.multipleimageselect.**
|
||||
|
||||
-keep class com.soundcloud.android.crop.** { *; }
|
||||
-dontwarn com.soundcloud.android.crop.**
|
||||
-keep class com.soundcloud.crop.** { *; }
|
||||
-dontwarn com.soundcloud.crop.**
|
||||
|
||||
# glide4.0
|
||||
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||||
@@ -190,6 +185,11 @@
|
||||
# for DexGuard only
|
||||
#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
|
||||
|
||||
# Presenter 相关
|
||||
-keep class com.chwl.app.base.** { *; }
|
||||
-keep public class * extends com.chwl.app.base.BaseMvpPresenter
|
||||
-keep public class * extends com.chwl.library.base.factory.AbstractMvpPresenter
|
||||
|
||||
# BaseAdapter
|
||||
-keep class com.chad.library.adapter.** {
|
||||
*;
|
||||
@@ -201,8 +201,8 @@
|
||||
<init>(...);
|
||||
}
|
||||
|
||||
-dontwarn com.yizhuan.habu.bindadapter.**
|
||||
-keep class com.yizhuan.habu.bindadapter.** {*;}
|
||||
-dontwarn com.chwl.app.bindadapter.**
|
||||
-keep class com.chwl.app.bindadapter.** {*;}
|
||||
|
||||
# Ping++ 混淆过滤
|
||||
-dontwarn com.pingplusplus.**
|
||||
@@ -233,11 +233,9 @@
|
||||
|
||||
# TODO 网络加载 一些业务bean gson 时候混淆问题
|
||||
-keep class org.json.** {*;}
|
||||
-dontwarn com.yizhuan.xchat_android_core.**
|
||||
-keep class com.yizhuan.xchat_android_core.** {*;}
|
||||
-keep class com.yizhuan.treasure_box.bean.** {*;}
|
||||
-keep class com.yizhuan.habu.avroom.bean.** {*;}
|
||||
|
||||
-keep class com.chwl.**.bean.** {*;}
|
||||
-keep class com.chwl.**.result.** {*;}
|
||||
-keep class com.chwl.**.entity.** {*;}
|
||||
|
||||
#百度统计
|
||||
-keep class com.baidu.bottom.** { *; }
|
||||
@@ -310,8 +308,8 @@
|
||||
-keep class com.autonavi.aps.amapapi.model.**{*;}
|
||||
|
||||
#暂时keep这个View排查华为oom问题
|
||||
-keep class com.yizhuan.habu.avroom.widget.MicroView{*;}
|
||||
-keep class com.yizhuan.habu.ui.widget.rollviewpager.RollPagerView{*;}
|
||||
-keep class com.chwl.app.avroom.widget.MicroView{*;}
|
||||
-keep class com.chwl.app.ui.widget.rollviewpager.RollPagerView{*;}
|
||||
|
||||
#linkedMe
|
||||
-keep class com.microquation.linkedme.android.** { *; }
|
||||
@@ -369,7 +367,7 @@
|
||||
-dontwarn com.meizu.cloud.**
|
||||
-keep class com.meizu.cloud.** {*;}
|
||||
|
||||
-keep class com.yizhuan.habu.ui.widget.AppBarLayoutBehavior {*;}
|
||||
-keep class com.chwl.app.ui.widget.AppBarLayoutBehavior {*;}
|
||||
|
||||
#ViewBinding使用的反射生成的对应Binding
|
||||
-keepclassmembers class * implements androidx.viewbinding.ViewBinding {
|
||||
@@ -454,7 +452,7 @@
|
||||
}
|
||||
|
||||
## EasyPhotos
|
||||
-keep class com.yizhuan.xchat_android_library.easyphoto.models.** { *; }
|
||||
-keep class com.chwl.library.easyphoto.models.** { *; }
|
||||
|
||||
## 图片裁剪UCrop
|
||||
-dontwarn com.yalantis.ucrop.**
|
||||
@@ -479,4 +477,164 @@
|
||||
}
|
||||
-keep public class com.android.installreferrer.**{ *; }
|
||||
|
||||
-keep public class * extends java.lang.Exception
|
||||
-keep public class * extends java.lang.Exception
|
||||
|
||||
-keep public class com.alibaba.android.arouter.routes.**{*;}
|
||||
-keep public class com.alibaba.android.arouter.facade.**{*;}
|
||||
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
|
||||
-keep class tech.sud.mgp.SudMGPWrapper.** {*;}
|
||||
|
||||
#new after proguard
|
||||
-dontwarn bdcb.eedb.**
|
||||
-keep class bdcb.eedb.** {*;}
|
||||
-keep class cddcabe.afbdedeb.** {*;}
|
||||
-keep class dfedf.eedab.** {*;}
|
||||
-keep class dcdaef.bbcdfa.** {*;}
|
||||
-keep class com.chwl.app.public_chat_hall.msg.viewholder.** {*;}
|
||||
-keep class decfc.acfca.** {*;}
|
||||
-keep class com.chwl.app.mentoring_relationship.viewholder.** {*;}
|
||||
-keep class b.** { *; }
|
||||
-keep class cb.** { *; }
|
||||
-keep public class * extends b.NP
|
||||
-keep public class * extends ddbfbdf.acbaddc.AbstractMvpPresenter
|
||||
-dontwarn bacefd.cdbedf.**
|
||||
-keep class bacefd.cdbedf.** {*;}
|
||||
-keep class f.DG{*;}
|
||||
-keep class bf.CA{*;}
|
||||
-keep class q.Y {*;}
|
||||
|
||||
-keep class bacccfc.abbadfec.** { *; }
|
||||
-keep class edecfbdbb.fbdcbfaaed.** { *; }
|
||||
-keep class bbfeef.fdaefba.** { *; }
|
||||
-keep class cfeefddf.daadadef.** { *; }
|
||||
-keep class eadfab.aaffafa.** { *; }
|
||||
-keep class cbbfdd.fdbaab.** { *; }
|
||||
-keep class fcffbcef.cbefeefa.** { *; }
|
||||
-keep class bbacbff.ecbddeb.** { *; }
|
||||
-keep class ebbbf.bfcbc.** { *; }
|
||||
-keep class afbfbfd.dffbcec.** { *; }
|
||||
-keep class el.** {*;}
|
||||
-keep class baf.edaf.** { *; }
|
||||
-keep class daddbf.cebdcdd.** { *; }
|
||||
-keep class adecece.cdedecc.** { *; }
|
||||
|
||||
-keep class fbbaffa.faecdbe.** { *; }
|
||||
-keep class accbfce.fccdabb.** { *; }
|
||||
-keep class afbfaa.afcdcd.** { *; }
|
||||
-keep class aecbcaf.acdbabae.** { *; }
|
||||
-keep class edeebee.fefabfb.** { *; }
|
||||
-dontwarn fbbaffa.faecdbe.**
|
||||
-dontwarn accbfce.fccdabb.**
|
||||
-dontwarn afbfaa.afcdcd.**
|
||||
-dontwarn aecbcaf.acdbabae.**
|
||||
-dontwarn edeebee.fefabfb.**
|
||||
|
||||
-keep class cp.** { *; }
|
||||
-dontwarn cp.**
|
||||
-keep public class * extends com.netease.nim.uikit.common.ui.recyclerview.holder.RecyclerViewHolder {*;}
|
||||
-keep public class * extends com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase {*;}
|
||||
|
||||
-keep class aea.baaf.** { *; }
|
||||
-keep class ddfb.edcab.** { *; }
|
||||
-keep class aeaaa.dedad.** { *; }
|
||||
-keep class acbfad.dcbefe.** { *; }
|
||||
-keep class deafc.bebac.** { *; }
|
||||
-keep class ffbe.bdac.** { *; }
|
||||
-keep class eaedcce.eebdfabf.** { *; }
|
||||
-keep class edcbb.bcfca.** { *; }
|
||||
-keep class ffdab.eabbd.** { *; }
|
||||
-keep class fcfc.debbb.** { *; }
|
||||
-keep class bfbcaedcbf.fddedfaafe.** { *; }
|
||||
-keep class eacfafb.adbcafda.** { *; }
|
||||
-keep class aedfcaaf.cdfbbcce.** { *; }
|
||||
-keep class bbcf.abac.** { *; }
|
||||
-keep class edfea.cddcb.** { *; }
|
||||
-keep class ccaad.bddfa.** { *; }
|
||||
-keep class aaffcba.daeefdac.** { *; }
|
||||
-keep class cbcdae.acdabfe.** { *; }
|
||||
-keep class eedbaeb.defbdfae.** { *; }
|
||||
-keep class cfeddda.aafffbc.** { *; }
|
||||
-keep class y.** {*;}
|
||||
-keep class eaffcdbc.daeffdba.** { *; }
|
||||
-keep class bfbdcd.fafefd.** { *; }
|
||||
-keep class ba.** {*;}
|
||||
-keep class aceac.ecabfe.** { *; }
|
||||
-keep class cdccdab.ebdbacb.** { *; }
|
||||
-keep class bababbc.cecaffca.** { *; }
|
||||
-keep class edbce.fdbbbc.** { *; }
|
||||
-keep class dfaabac.aabbefcc.** { *; }
|
||||
-keep class edccdc.abfbfcc.** { *; }
|
||||
-keep class eebfd.aaccca.** { *; }
|
||||
-keep class ecaed.eebace.** { *; }
|
||||
-keep class cfeee.cdeea.** { *; }
|
||||
-keep class afb.eaca.** { *; }
|
||||
-keep class bdebccd.fbfaecdb.** { *; }
|
||||
-keep class eacfafb.aadfdcee.** { *; }
|
||||
-keep class bceba.bbfce.** { *; }
|
||||
-keep class cd.** {*;}
|
||||
-keep class fddadcc.fbdbaaa.** { *; }
|
||||
-keep class bdabfb.aecccbc.** { *; }
|
||||
-keep class g.** {*;}
|
||||
-keep class edbaad.bbdcdfc.** { *; }
|
||||
-keep class acdfe.ebeaed.** { *; }
|
||||
-keep class fabffdc.ffcdadbe.** { *; }
|
||||
-keep class abbefdab.daeaadad.** { *; }
|
||||
-keep class def.cff.** { *; }
|
||||
-keep class fbefaae.fddefebe.** { *; }
|
||||
-keep class fbdfcae.fefbfee.** { *; }
|
||||
-keep class dfefd.bacabc.** { *; }
|
||||
-keep class ffedae.acfcdbb.** { *; }
|
||||
-keep class ddeeb.bdcdf.** { *; }
|
||||
-keep class dcabc.bbdaea.** { *; }
|
||||
-keep class adbaee.fffffc.** { *; }
|
||||
-keep class bb.** {*;}
|
||||
-keep class fffba.cdbfee.** { *; }
|
||||
-keep class cbeee.efcdfb.** { *; }
|
||||
-keep class cdaabd.cfabfca.** { *; }
|
||||
-keep class dbeef.acefca.** { *; }
|
||||
-keep class edbabbab.acdccacc.** { *; }
|
||||
-keep class dedfdbd.ebffbcba.** { *; }
|
||||
-keep class dfdefbe.fedadcf.** { *; }
|
||||
-keep class accd.bbdff.** { *; }
|
||||
-keep class u.** {*;}
|
||||
-keep class ebbffdf.beebece.** { *; }
|
||||
-keep class fcfdaa.edabfab.** { *; }
|
||||
-keep class afbba.abdcd.** { *; }
|
||||
-keep class dbcce.ecaeff.** { *; }
|
||||
-keep class fbbcdb.ddfadba.** { *; }
|
||||
-keep class bbecb.daedaf.** { *; }
|
||||
-keep class cdade.adeda.** { *; }
|
||||
-keep class bg.** {*;}
|
||||
-keep class bbcabbb.dcabfcd.** { *; }
|
||||
-keep class cfadf.caddb.** { *; }
|
||||
-keep class bdbabbdc.ffafceeac.** { *; }
|
||||
-keep class bd.** {*;}
|
||||
-keep class ccbd.abca.** { *; }
|
||||
-keep class j.** {*;}
|
||||
-keep class fbeebae.ebcadebe.** { *; }
|
||||
-keep class aaecbd.bfafacd.** { *; }
|
||||
-keep class fcef.caffe.** { *; }
|
||||
-keep class decd.efffc.** { *; }
|
||||
-keep class cdfaac.caaeba.** { *; }
|
||||
-keep class fdab.dbaad.** { *; }
|
||||
-keep class dbcdb.edafab.** { *; }
|
||||
-keep class feacbcff.edcaafbbb.** { *; }
|
||||
-keep class ebdeaeb.dbccefdb.** { *; }
|
||||
-keep class feacdf.cefdbd.** { *; }
|
||||
-keep class efbbc.adeda.** { *; }
|
||||
-keep class bccd.dddee.** { *; }
|
||||
-keep class faafdf.cefbbcb.** { *; }
|
||||
-keep class fcebb.eebee.** { *; }
|
||||
-keep class cedec.faddde.** { *; }
|
||||
-keep class affae.fcdff.** { *; }
|
||||
|
||||
-keep class eecdc.cddbfa.** { *; }
|
||||
-keep class fddd.dbae.** { *; }
|
||||
-keep class defceb.bddedaa.** { *; }
|
||||
-keep class decd.efffc.** { *; }
|
||||
|
||||
-keep class bbfeef.fdaefba.** { *; }
|
||||
-keep class baf.edaf.** { *; }
|
||||
-keep class acdb.aacb.** { *; }
|
||||
-keep class bacfcf.dddbef.** { *; }
|
||||
-keep class cfeaf.ddccec.** { *; }
|
@@ -1,28 +0,0 @@
|
||||
package com.yizhuan.habu;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() throws Exception {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
|
||||
assertEquals("com.yizhuan.habu_android_client", appContext.getPackageName());
|
||||
}
|
||||
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.yizhuan.habu">
|
||||
package="com.chwl.app">
|
||||
|
||||
<uses-sdk tools:overrideLibrary="com.huawei.android.hms.base,com.huawei.android.hms.push" />
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
<queries>
|
||||
<package android:name="com.facebook.katana" />
|
||||
<package android:name="jp.naver.line.android" />
|
||||
<!-- <package android:name="com.facebook.katana" />-->
|
||||
<!-- <package android:name="jp.naver.line.android" />-->
|
||||
<package android:name="com.android.vending" />
|
||||
</queries>
|
||||
|
||||
@@ -51,9 +51,9 @@
|
||||
tools:node="remove" />
|
||||
<uses-permission android:name="android.permission.FLASHLIGHT" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission tools:node="remove" android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
<uses-permission tools:node="remove" android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
@@ -82,19 +82,20 @@
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<!-- 对于 Android 12.0 及以上设备,还需要添加如下权限: -->
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" />
|
||||
<application
|
||||
android:name=".application.XChatApplication"
|
||||
android:name=".application.App"
|
||||
android:allowBackup="false"
|
||||
android:icon="@mipmap/app_logo"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_launch_name"
|
||||
android:largeHeap="true"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:resizeableActivity="true"
|
||||
android:supportsRtl="true"
|
||||
android:testOnly="false"
|
||||
android:theme="@style/MyMaterialTheme"
|
||||
tools:replace="android:name,android:allowBackup"
|
||||
tools:replace="android:name,android:label,android:allowBackup"
|
||||
tools:targetApi="n">
|
||||
|
||||
<activity
|
||||
@@ -127,12 +128,30 @@
|
||||
<!-- </intent-filter>-->
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".ui.link.LinkActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/transparent_activity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="app"
|
||||
android:scheme="molistar" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="firebase_crashlytics_collection_enabled"-->
|
||||
<!-- android:value="${CRASHLYTICS_COLLECTION_ENABLED}" /> <!– 刘海屏适配 begin –>-->
|
||||
<!-- 小米 -->
|
||||
<activity
|
||||
android:name="com.soundcloud.android.crop.CropImageActivity"
|
||||
android:name="com.soundcloud.crop.CropImageActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 华为 -->
|
||||
<activity
|
||||
android:name="com.darsh.multipleimageselect.activities.AlbumSelectActivity"
|
||||
@@ -152,31 +171,31 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity> <!-- 刘海屏适配 end -->
|
||||
<activity
|
||||
android:name="com.mob.tools.MobUIShell"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- 云信配置 begin ##################################################### -->
|
||||
<!-- <activity-->
|
||||
<!-- android:name="com.mob.tools.MobUIShell"-->
|
||||
<!-- android:configChanges="keyboardHidden|orientation|screenSize"-->
|
||||
<!-- android:theme="@android:style/Theme.Translucent.NoTitleBar"-->
|
||||
<!-- android:windowSoftInputMode="stateHidden|adjustResize" /> <!– 云信配置 begin ##################################################### –>-->
|
||||
<!--
|
||||
APP key, 可以在这里设置,也可以在 SDKOptions 中提供。
|
||||
如果 SDKOptions 中提供了,取 SDKOptions 中的值。
|
||||
-->
|
||||
<activity
|
||||
android:name="com.vele.habuplay.lineapi.LineAuthenticationCallbackActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTask"
|
||||
android:noHistory="true">
|
||||
<!-- <activity-->
|
||||
<!-- android:name="app.molistar.fun.lineapi.LineAuthenticationCallbackActivity"-->
|
||||
<!-- android:exported="true"-->
|
||||
<!-- android:launchMode="singleTask"-->
|
||||
<!-- android:noHistory="true">-->
|
||||
|
||||
<!-- 集成line客户端登录授权,需要添如下格式的过滤器 -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<!-- <!– 集成line客户端登录授权,需要添如下格式的过滤器 –>-->
|
||||
<!-- <intent-filter>-->
|
||||
<!-- <action android:name="android.intent.action.VIEW" />-->
|
||||
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
|
||||
<!-- <category android:name="android.intent.category.DEFAULT" />-->
|
||||
|
||||
<data android:scheme="lineauth" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- <data android:scheme="lineauth" />-->
|
||||
<!-- </intent-filter>-->
|
||||
<!-- </activity>-->
|
||||
<!--
|
||||
声明云信后台服务,如需保持后台推送,使用独立进程效果会更好。
|
||||
ca46478c438dda51d25306f52fe7506b
|
||||
@@ -223,7 +242,7 @@
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:label="Habu Live"
|
||||
android:label="MoliStar"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan|stateAlwaysHidden" /> <!-- 配置的service和receiver -->
|
||||
@@ -247,6 +266,12 @@
|
||||
android:name=".avroom.activity.RoomSettingActivity"
|
||||
android:label="@string/main_androidmanifest_07"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".avroom.activity.RoomTypeSwitchActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".avroom.activity.RoomBgSettingActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".avroom.activity.RoomManagerListActivity"
|
||||
android:label="@string/main_androidmanifest_08"
|
||||
@@ -260,12 +285,12 @@
|
||||
android:label="房间流水"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.music.activity.AddLocalMusicListActivity"
|
||||
android:name="com.chwl.app.music.activity.AddLocalMusicListActivity"
|
||||
android:label="@string/main_androidmanifest_010"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AVRoomTheme" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.music.activity.MusicListActivity"
|
||||
android:name="com.chwl.app.music.activity.MusicListActivity"
|
||||
android:label="@string/main_androidmanifest_011"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="portrait"
|
||||
@@ -291,6 +316,9 @@
|
||||
android:name=".ui.user.activity.UserInfoActivity"
|
||||
android:label="@string/main_androidmanifest_016"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.user.activity.UserCpListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".audio.AudioRecordActivity"
|
||||
android:label="@string/main_androidmanifest_017"
|
||||
@@ -300,12 +328,11 @@
|
||||
android:label="@string/main_androidmanifest_018"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".home.activity.CollectionRoomActivity"
|
||||
android:label="@string/main_androidmanifest_019"
|
||||
android:name=".ui.wallet.WalletActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.wallet.ExchangeGoldActivity"
|
||||
android:label="@string/main_androidmanifest_020"
|
||||
android:name=".home.activity.CollectionRoomActivity"
|
||||
android:label="@string/main_androidmanifest_019"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.setting.SettingActivity"
|
||||
@@ -316,18 +343,6 @@
|
||||
<activity
|
||||
android:name=".ui.relation.FansListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.withdraw.WithdrawActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.withdraw.bankcard.BindWithdrawBankCardActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.withdraw.WithdrawRuleActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.withdraw.BinderAlipayActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.user.activity.AboutActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
@@ -404,10 +419,6 @@
|
||||
android:name=".decoration.view.MyDecorationActivity"
|
||||
android:label="@string/main_androidmanifest_027"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".decoration.view.DecorationStoreActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".ui.user.activity.UserGiftActivity"
|
||||
android:screenOrientation="portrait"
|
||||
@@ -416,42 +427,6 @@
|
||||
android:name=".friend.view.SelectFriendActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyPlazaActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyHomeActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilySearchActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyListActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyManageActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyCurrencyActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyMemberListActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyInfoActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyMemberSearchActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".team.view.NimTeamMessageActivity"
|
||||
android:screenOrientation="portrait"
|
||||
@@ -496,10 +471,6 @@
|
||||
android:name=".luckymoney.view.LuckyMoneyDetailActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- android:launchMode="singleTask" -->
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyMemberCurrencyActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".ErbanTakePhotoActivity"
|
||||
android:screenOrientation="portrait"
|
||||
@@ -508,21 +479,9 @@
|
||||
android:name=".team.view.UpdateTeamNameActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilySelectFriendActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyTextInputActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".family.view.activity.FamilyGameListActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".treasure_box.activity.TreasureBoxActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
android:theme="@style/transparent_activity" />
|
||||
<activity
|
||||
android:name=".treasure_box.activity.BoxRankingActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
@@ -540,17 +499,6 @@
|
||||
android:name=".ui.widget.RecallDialog"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/dialog_activity_close_inside" />
|
||||
<activity
|
||||
android:name=".public_chat_hall.activity.PublicChatHallHomeActivity"
|
||||
android:configChanges="keyboardHidden|orientation"
|
||||
android:label="@string/main_androidmanifest_028"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".public_chat_hall.activity.PublicChatHallAitFriendsActivity"
|
||||
android:configChanges="keyboardHidden|orientation"
|
||||
android:label="@string/main_androidmanifest_029"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.user.decorationsend.DecorationSendActivity"
|
||||
android:screenOrientation="portrait"
|
||||
@@ -561,14 +509,6 @@
|
||||
<activity
|
||||
android:name=".avroom.activity.RoomOnlineUserActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".public_chat_hall.activity.PublicChatHallRelatedToMeActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".public_chat_hall.activity.AitFriendsSearchActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".ui.login.ShowBindPhoneActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
@@ -634,9 +574,6 @@
|
||||
<activity
|
||||
android:name=".module_hall.hall.activity.MemberSearchActivity"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".avroom.activity.CpRoomInviteActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".module_hall.hall.activity.HallSearchActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
@@ -649,36 +586,25 @@
|
||||
<activity
|
||||
android:name=".module_hall.team.activity.HTeamMemberListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.mentoring_relationship.activity.MentoringRelationshipActivity"
|
||||
android:label="@string/main_androidmanifest_030"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".avroom.recommendcard.MyRecommendCardActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.NimRoomP2PMessageActivity"
|
||||
android:name="com.chwl.app.room_chat.activity.NimRoomP2PMessageActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.RoomMsgActivity"
|
||||
android:name="com.chwl.app.room_chat.activity.RoomMsgActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.RoomNewbieActivity"
|
||||
android:name="com.chwl.app.room_chat.activity.RoomInviteFansActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.RoomNewbieMessageActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.RoomInviteFansActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.NimTeamRoomMessageActivity"
|
||||
android:name="com.chwl.app.room_chat.activity.NimTeamRoomMessageActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.room_chat.activity.NimHallTeamRoomMessageActivity"
|
||||
android:name="com.chwl.app.room_chat.activity.NimHallTeamRoomMessageActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
@@ -687,9 +613,6 @@
|
||||
<activity
|
||||
android:name=".radish.activity.RadishRecordActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".radish.signin.SignInActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".radish.task.activity.TaskCenterActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
@@ -713,42 +636,6 @@
|
||||
<activity
|
||||
android:name=".audio.VoiceMatchActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldGuestPageActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 推荐位 -->
|
||||
<activity
|
||||
android:name=".miniworld.activity.TopicMainActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldEditActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldMemberListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldTeamMessageActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MWTeamRoomMessageAct"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldGroupThemeActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.AllTopicActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
|
||||
<!-- 萝卜-签到-任务 -->
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldSearchActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".miniworld.activity.MiniWorldMainActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity android:name=".ui.im.friend.ActFriendList" />
|
||||
<activity
|
||||
android:name=".bank_card.activity.BankCardListActivity"
|
||||
@@ -763,78 +650,58 @@
|
||||
android:name=".bank_card.activity.AddBankCardAgreementActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.yizhuan.habu.sadmin.RoomSAdminManagerActivity"
|
||||
android:name="com.chwl.app.sadmin.RoomSAdminManagerActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".home.activity.CommunityNoticeAct"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".community.publish.view.PublishActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustNothing" />
|
||||
<activity
|
||||
android:name=".community.dynamic.view.DynamicDetailActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".community.photo.PreviewPhotoActivity"
|
||||
android:name=".photo.PreviewPhotoActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".community.photo.BigPhotoActivity"
|
||||
android:name=".photo.BigPhotoActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.zhihu.matisse.ui.MatisseActivity"
|
||||
android:name="com.example.matisse.ui.MatisseActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.zhihu.matisse.internal.ui.AlbumPreviewActivity"
|
||||
android:name="com.example.matisse.internal.ui.AlbumPreviewActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name="com.zhihu.matisse.internal.ui.SelectedPreviewActivity"
|
||||
android:name="com.example.matisse.internal.ui.SelectedPreviewActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
|
||||
<activity
|
||||
android:name=".ui.wallet.sendgold.SendGoldActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldDetailActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldToUserActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldSearchActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".ui.setting.PrivacySettingActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 银行卡列表 -->
|
||||
<activity
|
||||
android:name=".ui.setting.NoticeSettingActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 解除绑定银行卡 -->
|
||||
<activity
|
||||
android:name=".ui.login.LoginActivity"
|
||||
android:label="@string/main_androidmanifest_031"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait" /> <!-- 绑定银行卡 -->
|
||||
<activity
|
||||
android:name=".ui.webview.DialogWebViewActivity"
|
||||
android:theme="@style/dialog_web_view_activity"
|
||||
android:windowSoftInputMode="adjustPan" /> <!-- 隐私政策 -->
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".ui.webview.baishun.BaiShunGameWebActivity"
|
||||
android:theme="@style/dialog_web_view_activity"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".ui.webview.room_banner.RoomWebDialogActivity"
|
||||
android:theme="@style/room_dialog_web_view_activity"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<!-- 隐私政策 -->
|
||||
<activity
|
||||
android:name=".ui.webview.DatingRuleWebViewActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".ui.webview.room_banner.RoomBannerWebDialogActivity"
|
||||
android:theme="@style/dialog_web_view_activity"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".ui.webview.TarotPayWebViewActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".ui.login.LoginPasswordActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait" /> <!-- 社区 -->
|
||||
<activity
|
||||
android:name=".ui.setting.ResetPasswordActivity"
|
||||
@@ -862,9 +729,6 @@
|
||||
android:name=".avroom.singleroompk.SingleRoomPKSearchActivity"
|
||||
android:theme="@style/dialog_web_view_activity"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".avroom.firstcharge.FirstChargeDialog"
|
||||
android:theme="@style/dialogactivity" />
|
||||
<activity
|
||||
android:name=".ui.setting.GrantedPermissionsActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
@@ -872,8 +736,8 @@
|
||||
android:name=".ui.setting.PermissionGuideActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".vip.VipMainActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 隐私设置 -->
|
||||
android:name=".vip.VipCenterActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".vip.VipSettingActivity"
|
||||
android:screenOrientation="portrait" /> <!-- 通知提醒设置 -->
|
||||
@@ -904,21 +768,6 @@
|
||||
<activity
|
||||
android:name=".relation.cp.activity.CpInviteRecordActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamJoinActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamJoinedActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".shipantics.PullRadishActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".shipantics.RadishRankingActivity"
|
||||
android:theme="@style/room_message_activity" />
|
||||
<activity
|
||||
android:name=".AgentActivity"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||
@@ -938,11 +787,6 @@
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".earn.activity.EarnWithdrawActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" /> <!-- com.yizhuan.xchat_android_core.skill -->
|
||||
<activity
|
||||
android:name=".earn.activity.BindWithdrawMsgActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
@@ -958,11 +802,6 @@
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.login.LoginBoundAuthCodeActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.setting.ShieldManageActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
@@ -978,15 +817,6 @@
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.user.activity.EditUserLabelActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".treasurefairy.HomeFairyActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/transparent_activity" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.webview.FairyDialogWebViewActivity"
|
||||
@@ -1016,9 +846,9 @@
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
|
||||
<meta-data
|
||||
android:name="Mob-Https"
|
||||
android:value="yes" />
|
||||
<!-- <meta-data-->
|
||||
<!-- android:name="Mob-Https"-->
|
||||
<!-- android:value="yes" />-->
|
||||
|
||||
<provider
|
||||
android:name="com.netease.nimlib.ipc.NIMContentProvider"
|
||||
@@ -1050,21 +880,86 @@
|
||||
|
||||
<service
|
||||
android:name="com.netease.nimlib.service.NimService"
|
||||
android:foregroundServiceType="remoteMessaging"
|
||||
android:process=":core" />
|
||||
<service
|
||||
android:name="com.netease.nimlib.service.NimService$Aux"
|
||||
android:foregroundServiceType="remoteMessaging"
|
||||
android:process=":core" />
|
||||
<service
|
||||
android:name="com.netease.nimlib.job.NIMJobService"
|
||||
android:foregroundServiceType="remoteMessaging"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"
|
||||
android:process=":core" />
|
||||
<service android:name="com.netease.nimlib.service.ResponseService" />
|
||||
<service android:name="com.netease.nimlib.service.ResponseService"
|
||||
android:foregroundServiceType="remoteMessaging"/>
|
||||
<service
|
||||
android:name=".service.DaemonService"
|
||||
android:foregroundServiceType="mediaPlayback"
|
||||
android:enabled="true" />
|
||||
|
||||
<activity android:name=".avroom.room_album.RoomAlbumActivity" />
|
||||
|
||||
<activity android:name=".ui.language.LanguageActivity" />
|
||||
|
||||
<activity android:name=".public_chat.ui.message.PublicChatRoomMessageActivity"
|
||||
android:configChanges="keyboardHidden|orientation"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamJoinActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamJoinedActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".fansteam.FansTeamListActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".decoration.view.DecorationStoreActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldDetailActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldToUserActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".pay.activity.GiveGoldSearchActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize" />
|
||||
<activity
|
||||
android:name=".game.ui.game.GameActivity"
|
||||
android:hardwareAccelerated="true"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".community.dynamic.view.DynamicDetailActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".community.publish.view.PublishActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="stateHidden|adjustNothing" />
|
||||
<activity
|
||||
android:windowSoftInputMode="adjustPan"
|
||||
android:name=".ui.feedback.FeedbackActivity"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity android:name=".ui.debug.DebugActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
<activity android:name=".ui.game_team.record.GameTeamRecordActivity"
|
||||
android:screenOrientation="portrait"/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
1
app/src/main/assets/hot_region.json
Normal file
@@ -0,0 +1 @@
|
||||
[{"name":"Taiwan","abbr":"TW","mcc":"466","code":"886"},{"name":"Hong Kong","abbr":"HK","mcc":"454","code":"852"},{"name":"Singapore","abbr":"SG","mcc":"525","code":"65"},{"name":"Malaysia","abbr":"MY","mcc":"502","code":"60"},{"name":"China","abbr":"CN","mcc":"460","code":"86"}]
|
BIN
app/src/main/assets/mp4/cp_bind.mp4
Normal file
BIN
app/src/main/assets/mp4/cp_userinfo_anim_3.mp4
Normal file
BIN
app/src/main/assets/mp4/cp_userinfo_anim_4.mp4
Normal file
BIN
app/src/main/assets/mp4/cp_userinfo_anim_5.mp4
Normal file
BIN
app/src/main/assets/mp4/home_star.mp4
Normal file
1
app/src/main/assets/region.json
Normal file
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"supplier":{
|
||||
"vivo":{
|
||||
"appid":"100215079"
|
||||
},
|
||||
"xiaomi":{
|
||||
|
||||
},
|
||||
"huawei":{
|
||||
|
||||
},
|
||||
"oppo":{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
BIN
app/src/main/assets/svga/Combo_Boom.svga
Normal file
BIN
app/src/main/assets/svga/cp_level_up_1.svga
Normal file
BIN
app/src/main/assets/svga/cp_level_up_2.svga
Normal file
BIN
app/src/main/assets/svga/cp_level_up_3.svga
Normal file
BIN
app/src/main/assets/svga/cp_level_up_4.svga
Normal file
BIN
app/src/main/assets/svga/cp_level_up_5.svga
Normal file
BIN
app/src/main/assets/svga/cp_list_head_1.svga
Normal file
BIN
app/src/main/assets/svga/cp_list_head_2.svga
Normal file
BIN
app/src/main/assets/svga/cp_list_head_3.svga
Normal file
BIN
app/src/main/assets/svga/cp_list_head_4.svga
Normal file
BIN
app/src/main/assets/svga/cp_list_head_5.svga
Normal file
BIN
app/src/main/assets/svga/home_star_gift.svga
Normal file
BIN
app/src/main/assets/svga/room_bg_single.svga
Normal file
BIN
app/src/main/assets/svga/room_menu_gift.svga
Normal file
BIN
app/src/main/assets/svga/smash_eggs_open.svga
Normal file
BIN
app/src/main/ic_launcher-playstore.png
Normal file
After Width: | Height: | Size: 25 KiB |
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu;
|
||||
package com.chwl.app;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.content.ComponentName;
|
||||
@@ -7,14 +7,6 @@ import android.os.Build;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.yizhuan.habu.other.activity.SplashActivity;
|
||||
import com.yizhuan.xchat_android_core.linked.LinkedModel;
|
||||
import com.yizhuan.xchat_android_core.linked.bean.LinkedInfo;
|
||||
import com.yizhuan.xchat_android_core.user.UserModel;
|
||||
import com.yizhuan.xchat_android_core.utils.TextUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class AgentActivity extends AppCompatActivity {
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu;
|
||||
package com.chwl.app;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -9,8 +9,8 @@ import com.jph.takephoto.app.TakePhotoActivity;
|
||||
import com.jph.takephoto.compress.CompressConfig;
|
||||
import com.jph.takephoto.model.CropOptions;
|
||||
import com.jph.takephoto.model.TResult;
|
||||
import com.yizhuan.habu.common.permission.PermissionActivity;
|
||||
import com.yizhuan.xchat_android_library.utils.file.JXFileUtils;
|
||||
import com.chwl.app.common.permission.PermissionActivity;
|
||||
import com.chwl.library.utils.file.JXFileUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu;
|
||||
package com.chwl.app;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
941
app/src/main/java/com/chwl/app/MainActivity.java
Normal file
@@ -0,0 +1,941 @@
|
||||
package com.chwl.app;
|
||||
|
||||
import static com.chwl.core.channel_page.model.ChannelPageModel.KEY_FLAG_VALID_CHANNEL_PAGE;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.chwl.app.base.GlobalViewModelOwner;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.app.community.square.SquareFragment;
|
||||
import com.chwl.app.game.core.GameStateAbility;
|
||||
import com.chwl.app.game.data.GameModel2;
|
||||
import com.chwl.app.game.ui.game.GameActivity;
|
||||
import com.chwl.app.game.ui.game.GameIntent;
|
||||
import com.chwl.app.game.ui.home.GameHomeFragment;
|
||||
import com.chwl.app.star.StarFragment;
|
||||
import com.chwl.app.support.PreloadResourceViewModel;
|
||||
import com.chwl.app.ui.login.LoginPasswordActivity;
|
||||
import com.chwl.core.home.bean.MainTabInfo;
|
||||
import com.chwl.core.settings.SettingsModel;
|
||||
import com.chwl.library.utils.JavaUtil;
|
||||
import com.netease.nim.uikit.StatusBarUtil;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
|
||||
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentContact;
|
||||
import com.netease.nimlib.sdk.team.TeamService;
|
||||
import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
|
||||
import com.netease.nimlib.sdk.team.model.Team;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
import com.chwl.app.application.IReportConstants;
|
||||
import com.chwl.app.application.ReportManager;
|
||||
import com.chwl.app.application.App;
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity;
|
||||
import com.chwl.app.base.BaseMvpActivity;
|
||||
import com.chwl.app.common.widget.CircleImageView;
|
||||
import com.chwl.app.common.widget.DragLayout;
|
||||
import com.chwl.app.home.HomeViewModel;
|
||||
import com.chwl.app.home.dialog.NewUserHelloDialog;
|
||||
import com.chwl.app.home.dialog.ProtocolUpdateDialog;
|
||||
import com.chwl.app.home.fragment.ContactsListFragment;
|
||||
import com.chwl.app.home.fragment.HomeFragment;
|
||||
import com.chwl.app.home.fragment.MeFragment;
|
||||
import com.chwl.app.home.presenter.MainPresenter;
|
||||
import com.chwl.app.home.view.IMainView;
|
||||
import com.chwl.app.home.widget.AnchorCardView;
|
||||
import com.chwl.app.module.Extras;
|
||||
import com.chwl.app.module_hall.secretcode.PwdCodeMgr;
|
||||
import com.chwl.app.service.DaemonService;
|
||||
import com.chwl.app.ui.im.ImInitHelper;
|
||||
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
|
||||
import com.chwl.app.ui.login.BindPhoneActivity;
|
||||
import com.chwl.app.ui.login.fragment.AddUserInfoFragment;
|
||||
import com.chwl.app.ui.patriarch.help.LimitEnterRoomHelper;
|
||||
import com.chwl.app.ui.patriarch.help.PmDialogShowMrg;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity;
|
||||
import com.chwl.app.ui.widget.LivingIconView;
|
||||
import com.chwl.app.ui.widget.MainTabLayout;
|
||||
import com.chwl.app.utils.CleanLeakUtils;
|
||||
import com.chwl.app.utils.PushMessageHandler;
|
||||
import com.chwl.core.Constants;
|
||||
import com.chwl.core.DemoCache;
|
||||
import com.chwl.core.UriProvider;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.auth.event.KickOutEvent;
|
||||
import com.chwl.core.auth.event.LoginEvent;
|
||||
import com.chwl.core.auth.event.LogoutEvent;
|
||||
import com.chwl.core.channel_page.model.ChannelPageModel;
|
||||
import com.chwl.core.community.event.SquareTaskEvent;
|
||||
import com.chwl.core.community.event.UnReadCountEvent;
|
||||
import com.chwl.core.home.bean.MainTabType;
|
||||
import com.chwl.core.home.event.VisitorUnreadCountEvent;
|
||||
import com.chwl.core.home.model.GameHomeModel;
|
||||
import com.chwl.core.home.model.HomeModel;
|
||||
import com.chwl.core.initial.InitialModel;
|
||||
import com.chwl.core.linked.LinkedModel;
|
||||
import com.chwl.core.linked.bean.LinkedInfo;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.manager.IMBroadcastManager;
|
||||
import com.chwl.core.manager.IMMessageManager;
|
||||
import com.chwl.core.manager.RoomEvent;
|
||||
import com.chwl.core.patriarch.event.CloseMinRoomEvent;
|
||||
import com.chwl.core.patriarch.event.ImPushMsgPmLimitTimeEvent;
|
||||
import com.chwl.core.patriarch.event.PmDismissAllLimitDialogEvent;
|
||||
import com.chwl.core.room.bean.RoomInfo;
|
||||
import com.chwl.core.user.UserModel;
|
||||
import com.chwl.core.user.bean.UserInfo;
|
||||
import com.chwl.core.user.event.LoadLoginUserInfoEvent;
|
||||
import com.chwl.core.user.event.LoginUserInfoUpdateEvent;
|
||||
import com.chwl.core.user.event.NeedBindPhoneEvent;
|
||||
import com.chwl.core.user.event.NeedCompleteInfoEvent;
|
||||
import com.chwl.core.utils.SharedPreferenceUtils;
|
||||
import com.chwl.core.utils.StringFormatUtils;
|
||||
import com.chwl.library.base.factory.CreatePresenter;
|
||||
import com.chwl.library.threadmgr.ThreadPoolManager;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
@CreatePresenter(MainPresenter.class)
|
||||
public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
implements MainTabLayout.OnTabClickListener, IMainView, View.OnClickListener {
|
||||
|
||||
public static final String MSG_TAB = "msgTab";
|
||||
private static final String TAG = "MainActivity";
|
||||
private static final String EXTRA_APP_QUIT = "APP_QUIT";
|
||||
private final SparseArray<Fragment> fragmentArray = new SparseArray<>();
|
||||
private View avatarLayout;
|
||||
private CircleImageView avatarImage;
|
||||
private LivingIconView userLivingView;
|
||||
private MainTabLayout mMainTabLayout;
|
||||
private AnchorCardView anchorCardView;
|
||||
private View viewClose;
|
||||
private int mCurrentTabType = MainTabType.TAB_TYPE_HOME;
|
||||
/**
|
||||
* 房间最小化动画,换成属性动画,原先的补间动画影响了activity的生命周期
|
||||
*/
|
||||
private ObjectAnimator roomMinAnim;
|
||||
/**
|
||||
* 管理限制进房
|
||||
*/
|
||||
private LimitEnterRoomHelper limitEnterRoomHelper;
|
||||
private HomeViewModel homeViewModel;
|
||||
private boolean mResumed = false;
|
||||
@Nullable
|
||||
private Fragment tempFragment = null;
|
||||
private DialogManager resumeGameDialogManager;
|
||||
|
||||
@Nullable
|
||||
private Runnable touchRunnable;
|
||||
|
||||
{
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_HOME, new HomeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_GAME, new GameHomeFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_SQUARE, new SquareFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_MSG, new ContactsListFragment());
|
||||
fragmentArray.put(MainTabType.TAB_TYPE_ME, new MeFragment());
|
||||
}
|
||||
|
||||
public static void start(Context context) {
|
||||
start(context, null);
|
||||
}
|
||||
|
||||
public static void start(Context context, Intent extras) {
|
||||
Intent intent = new Intent();
|
||||
intent.setClass(context, MainActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
if (extras != null) {
|
||||
intent.putExtras(extras);
|
||||
}
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true 如果处理了跳转
|
||||
*/
|
||||
public static boolean handleLinkedJump(Context context) {
|
||||
LinkedInfo linkedInfo = LinkedModel.get().getLinkedInfo();
|
||||
LinkedModel.get().setLinkedInfo(null);
|
||||
|
||||
if (linkedInfo == null || linkedInfo.getType() == null || linkedInfo.getType().equals("null")) {
|
||||
return false;
|
||||
}
|
||||
LogUtil.print(ResUtil.getString(R.string.yizhuan_erban_mainactivity_01));
|
||||
// 跳转
|
||||
if (!StringUtil.isEmpty(linkedInfo.getRoomUid()) && linkedInfo.getType().equals("2")) {
|
||||
AVRoomActivity.start(context, Long.parseLong(linkedInfo.getRoomUid()));
|
||||
} else if (!TextUtils.isEmpty(linkedInfo.getUrl()) && linkedInfo.getType().equals("3")) {
|
||||
CommonWebViewActivity.start(context, UriProvider.getLinkUrl(linkedInfo.getUrl()));
|
||||
} else if (linkedInfo.getType().equals("7") && !TextUtils.isEmpty(linkedInfo.getUid())) {
|
||||
NimP2PMessageActivity.start(context, linkedInfo.getUid());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putInt(Constants.KEY_MAIN_POSITION, mCurrentTabType);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(@NotNull Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
mCurrentTabType = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ViewModelProvider viewModelProvider = new ViewModelProvider(this);
|
||||
homeViewModel = viewModelProvider.get(HomeViewModel.class);
|
||||
NimMiddleActivity.firstEnter = false;
|
||||
if (savedInstanceState != null) {
|
||||
mCurrentTabType = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
|
||||
}
|
||||
setContentView(R.layout.activity_main);
|
||||
//自动登录
|
||||
AuthModel.get().autoLogin()
|
||||
.doOnError(throwable -> onNeedLogin())
|
||||
.subscribe();
|
||||
initView();
|
||||
List<MainTabInfo> mainTabInfo = InitialModel.get().getMainTabInfosLiveData().getValue();
|
||||
if (mainTabInfo != null) {
|
||||
mMainTabLayout.setMainTabInfoList(mainTabInfo);
|
||||
}
|
||||
initMaterialView();
|
||||
onParseIntent();
|
||||
updateDatas();
|
||||
updateRoomState();
|
||||
ImInitHelper.get().init();
|
||||
EventBus.getDefault().register(this);
|
||||
otherModelInit();
|
||||
|
||||
homeViewModel.getAnchorInfoLiveData().observe(this, anchorInfo -> {
|
||||
if (anchorInfo != null) {
|
||||
anchorCardView.setAnchorInfo(anchorInfo);
|
||||
DemoCache.saveAnchorCardView(2);
|
||||
}
|
||||
});
|
||||
checkResumeGame();
|
||||
}
|
||||
|
||||
private void otherModelInit() {
|
||||
PwdCodeMgr.get().onCreateInit();
|
||||
//初始化线程池
|
||||
ThreadPoolManager.instance().init();
|
||||
IMBroadcastManager.get().onCreate();
|
||||
ImageLoadUtilsV2.init(context);
|
||||
SettingsModel.get().checkSysAccount();
|
||||
initPreloadResource();
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void checkResumeGame() {
|
||||
GameModel2.INSTANCE.getResumeGameRoomInfo().compose(bindToLifecycle()).subscribe(gameRoomInfo -> {
|
||||
if (gameRoomInfo != null && gameRoomInfo.getData() != null) {
|
||||
Integer state = gameRoomInfo.getData().getMatchStatus();
|
||||
if (state != null && (state == GameStateAbility.STATE_MATCH_SUCCESS || state == GameStateAbility.STATE_MATCHING)) {
|
||||
if (resumeGameDialogManager == null) {
|
||||
resumeGameDialogManager = new DialogManager(this);
|
||||
}
|
||||
resumeGameDialogManager.showOkCancelDialog(getString(R.string.resume_game_tips), getString(R.string.join_organization_ok), getString(R.string.join_organization_no), false, new DialogManager.OkCancelDialogListener() {
|
||||
@Override
|
||||
public void onOk() {
|
||||
long gameId = JavaUtil.str2long(gameRoomInfo.getData().getMgId());
|
||||
int gameMode = 0;
|
||||
GameActivity.Companion.start(context, new GameIntent(gameId, gameMode));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
DialogManager.OkCancelDialogListener.super.onCancel();
|
||||
Long roomId = gameRoomInfo.getRoomId();
|
||||
if (roomId != null) {
|
||||
GameModel2.INSTANCE.closeGameRx(roomId).compose(bindToLifecycle()).subscribe(s -> {
|
||||
}, throwable -> {
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}, throwable -> {
|
||||
});
|
||||
}
|
||||
|
||||
private void initPreloadResource() {
|
||||
PreloadResourceViewModel viewModel = new ViewModelProvider(
|
||||
GlobalViewModelOwner.Companion.getInstance()
|
||||
).get(PreloadResourceViewModel.class);
|
||||
viewModel.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onReceiveChatRoomEvent(RoomEvent roomEvent) {
|
||||
super.onReceiveChatRoomEvent(roomEvent);
|
||||
if (roomEvent == null || roomEvent.getEvent() == RoomEvent.NONE) return;
|
||||
int event = roomEvent.getEvent();
|
||||
if (event == RoomEvent.ENTER_ROOM) {
|
||||
onEnter(AvRoomDataManager.get().mCurrentRoomInfo);
|
||||
} else if (event == RoomEvent.KICK_OUT_ROOM) {
|
||||
|
||||
ChatRoomKickOutEvent reason = roomEvent.getReason();
|
||||
if (reason == null) return;
|
||||
//加入黑名单,踢出房间回调
|
||||
ChatRoomKickOutEvent.ChatRoomKickOutReason reasonReason = reason.getReason();
|
||||
if (reasonReason == ChatRoomKickOutEvent.ChatRoomKickOutReason.BE_BLACKLISTED
|
||||
|| reasonReason == ChatRoomKickOutEvent.ChatRoomKickOutReason.KICK_OUT_BY_MANAGER
|
||||
|| reasonReason == ChatRoomKickOutEvent.ChatRoomKickOutReason.KICK_OUT_BY_CONFLICT_LOGIN
|
||||
|| reasonReason == ChatRoomKickOutEvent.ChatRoomKickOutReason.CHAT_ROOM_INVALID) {
|
||||
exitRoom(AvRoomDataManager.get().mCurrentRoomInfo);
|
||||
}
|
||||
} else if (event == RoomEvent.ROOM_EXIT) {
|
||||
exitRoom(roomEvent.getRoomInfo());
|
||||
} else if (event == RoomEvent.ROOM_CHAT_RECONNECTION) {
|
||||
updateRoomState();
|
||||
} else if (event == RoomEvent.MY_SELF_KICK_OUT_ROOM_BY_S_ADMIN) {
|
||||
AvRoomDataManager.get().addCurrentRoomLimitEnter();
|
||||
toast(R.string.kick_out_room_by_s_admin);
|
||||
getMvpPresenter().exitRoom();
|
||||
}
|
||||
}
|
||||
|
||||
private void closeOpenRoomAnimation() {
|
||||
stopRoomMinAnim();
|
||||
avatarLayout.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
mResumed = true;
|
||||
if (avatarLayout.getVisibility() == View.VISIBLE) {
|
||||
userLivingView.start();
|
||||
}
|
||||
//这里是为了处理APP后台运行的情况下点击分享房间等LinkedMe链接的情况
|
||||
UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
|
||||
if (userInfo != null) {
|
||||
handleLinkedJump(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
mResumed = false;
|
||||
if (avatarLayout.getVisibility() == View.VISIBLE) {
|
||||
userLivingView.stop();
|
||||
}
|
||||
mMainTabLayout.removeCallbacks(touchRunnable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (touchRunnable == null) return super.onTouchEvent(event);
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
mMainTabLayout.removeCallbacks(touchRunnable);
|
||||
break;
|
||||
case MotionEvent.ACTION_UP:
|
||||
mMainTabLayout.postDelayed(touchRunnable, 5000);
|
||||
break;
|
||||
}
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
mMainTabLayout = findViewById(R.id.main_tab_layout);
|
||||
avatarLayout = findViewById(R.id.avatar_image_layout);
|
||||
viewClose = findViewById(R.id.view_close);
|
||||
avatarImage = findViewById(R.id.avatar_image);
|
||||
userLivingView = findViewById(R.id.liv_user);
|
||||
userLivingView.setColor(Color.WHITE);
|
||||
mMainTabLayout.setOnTabClickListener(this);
|
||||
anchorCardView = findViewById(R.id.vs_anchor_card);
|
||||
mMainTabLayout.setDefaultTabType(mCurrentTabType);
|
||||
}
|
||||
|
||||
private void updateDatas() {
|
||||
handleNimIntent();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
setIntent(intent);
|
||||
//这里退出登录,实际上mainActivity是没有销毁的,当从linkme 调起来时候这里需要检查一下登录状态。
|
||||
if (TextUtils.isEmpty(AuthModel.get().getTicket())) {
|
||||
onNeedLogin();
|
||||
return;
|
||||
}
|
||||
onParseIntent();
|
||||
handleNimIntent();
|
||||
InitialModel.get().regionCheck();
|
||||
}
|
||||
|
||||
private void onParseIntent() {
|
||||
Intent intent = getIntent();
|
||||
if (intent.hasExtra(EXTRA_APP_QUIT)) {
|
||||
onLogout();
|
||||
} else if (intent.hasExtra(Extras.EXTRA_JUMP_P2P)) {
|
||||
Intent data = intent.getParcelableExtra(Extras.EXTRA_DATA);
|
||||
String account = data.getStringExtra(Extras.EXTRA_ACCOUNT);
|
||||
if (!TextUtils.isEmpty(account)) {
|
||||
NimP2PMessageActivity.start(this, account);
|
||||
}
|
||||
} else if (intent.hasExtra(MSG_TAB) && intent.getBooleanExtra(MSG_TAB, false)) {
|
||||
if (mMainTabLayout != null) {
|
||||
mMainTabLayout.setDefaultTabType(MainTabType.TAB_TYPE_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void initMaterialView() {
|
||||
avatarLayout.setVisibility(View.GONE);
|
||||
avatarImage.setOnClickListener(this);
|
||||
viewClose.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
CleanLeakUtils.fixInputMethodManagerLeak(MainActivity.this);
|
||||
super.onDestroy();
|
||||
if (resumeGameDialogManager != null) {
|
||||
resumeGameDialogManager.dismissDialog();
|
||||
}
|
||||
ImInitHelper.get().unInit();
|
||||
EventBus.getDefault().unregister(this);
|
||||
stopRoomMinAnim();
|
||||
if (limitEnterRoomHelper != null) {
|
||||
limitEnterRoomHelper.release();
|
||||
}
|
||||
IMBroadcastManager.get().onDestroy();
|
||||
}
|
||||
|
||||
/**
|
||||
* 双击返回键退出
|
||||
*/
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
||||
|
||||
/**
|
||||
* 防止华为机型未加入白名单时按返回键回到桌面再锁屏后几秒钟进程被杀
|
||||
*/
|
||||
try {
|
||||
Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
|
||||
launcherIntent.addCategory(Intent.CATEGORY_HOME);
|
||||
startActivity(launcherIntent);
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
try {
|
||||
moveTaskToBack(false);
|
||||
} catch (Exception e) {
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
}
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
try {
|
||||
moveTaskToBack(false);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLoginEvent(LoginEvent event) {
|
||||
onLogin(AuthModel.get().getCurrentUid());
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否绑定手机
|
||||
*/
|
||||
private void checkBindPhone() {
|
||||
BindPhoneActivity.start(context);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLogoutEvent(LogoutEvent event) {
|
||||
PwdCodeMgr.get().onLogout();
|
||||
onLogout();
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public void onLogin(long uid) {
|
||||
Logger.e(TAG, "onLogin Success ~~~~");
|
||||
|
||||
Log.i("checkLostUser", "onLogin");
|
||||
|
||||
int unreadCount = IMMessageManager.get().queryUnreadMsg();
|
||||
mMainTabLayout.setMsgNum(unreadCount);
|
||||
openCommunityNotice();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
|
||||
firstLoadedUserInfo();
|
||||
InitialModel.get().regionCheck();
|
||||
}
|
||||
|
||||
public void onLogout() {
|
||||
Logger.e(TAG, "onLogout Success ~~~~");
|
||||
getMvpPresenter().exitRoom();
|
||||
LoginPasswordActivity.start(MainActivity.this);
|
||||
PmDialogShowMrg.get().onLogout();
|
||||
finish();
|
||||
}
|
||||
|
||||
public void onNeedLogin() {
|
||||
NimMiddleActivity.openCommunity = false;
|
||||
LoginPasswordActivity.start(MainActivity.this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onKickedOutEvent(KickOutEvent event) {
|
||||
toast(getString(R.string.you_have_been_kicked_offline));
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReceiveRecentContactChanged(List<RecentContact> imMessages) {
|
||||
|
||||
int countIgnore = 0;
|
||||
for (RecentContact recentContact : imMessages) {
|
||||
|
||||
if (recentContact.getSessionType() == SessionTypeEnum.Team) {
|
||||
Team team = NIMClient.getService(TeamService.class).queryTeamBlock(recentContact.getContactId());
|
||||
if (team != null && team.getMessageNotifyType() == TeamMessageNotifyTypeEnum.Mute) {
|
||||
countIgnore += recentContact.getUnreadCount();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
int unreadCount = IMMessageManager.get().queryUnreadMsg() + countIgnore;
|
||||
mMainTabLayout.setMsgNum(unreadCount);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onNeedCompleteInfo(NeedCompleteInfoEvent event) {
|
||||
getDialogManager().dismissDialog();
|
||||
UIHelper.showAddInfoAct(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onLoginUserInfoUpdateEvent(LoginUserInfoUpdateEvent event) {
|
||||
int unreadCount = IMMessageManager.get().queryUnreadMsg();
|
||||
mMainTabLayout.setMsgNum(unreadCount);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void updateRoomState() {
|
||||
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (roomInfo != null) {
|
||||
displayAvatarLayout(roomInfo.getAvatar(), roomInfo.getTitle(), roomInfo.getUid());
|
||||
}
|
||||
}
|
||||
|
||||
private void startRoomMinAnim() {
|
||||
roomMinAnim = ObjectAnimator.ofFloat(avatarImage, "rotation", 0f, 360f);
|
||||
roomMinAnim.setDuration(10000);
|
||||
roomMinAnim.setRepeatCount(-1);
|
||||
roomMinAnim.setInterpolator(new LinearInterpolator());
|
||||
roomMinAnim.start();
|
||||
}
|
||||
|
||||
private void stopRoomMinAnim() {
|
||||
if (roomMinAnim != null) {
|
||||
roomMinAnim.cancel();
|
||||
roomMinAnim = null;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private void displayAvatarLayout(String avatar, String nickName, long uid) {
|
||||
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (roomInfo != null) {
|
||||
avatarLayout.clearAnimation();
|
||||
avatarLayout.setVisibility(View.VISIBLE);
|
||||
userLivingView.start();
|
||||
stopRoomMinAnim();
|
||||
startRoomMinAnim();
|
||||
ImageLoadUtils.loadAvatar(MainActivity.this, avatar, avatarImage);
|
||||
}
|
||||
}
|
||||
|
||||
public void onEnter(RoomInfo roomInfo) {
|
||||
updateRoomState();
|
||||
DaemonService.start(this, roomInfo);
|
||||
}
|
||||
|
||||
@SuppressLint("RestrictedApi")
|
||||
@Override
|
||||
public void onTabClick(int tabType) {
|
||||
|
||||
Fragment showFragment = fragmentArray.get(tabType);
|
||||
if (showFragment == tempFragment) return;
|
||||
|
||||
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
|
||||
if (!showFragment.isAdded()) {
|
||||
transaction.add(R.id.main_fragment, showFragment, null);
|
||||
}
|
||||
transaction.show(showFragment);
|
||||
if (tempFragment != null) {
|
||||
transaction.hide(tempFragment);
|
||||
}
|
||||
tempFragment = showFragment;
|
||||
if (!isDestroyed()) {
|
||||
transaction.commitNowAllowingStateLoss();
|
||||
}
|
||||
mCurrentTabType = tabType;
|
||||
|
||||
//每次点击我的都更新当前用户信息
|
||||
if (mCurrentTabType == MainTabType.TAB_TYPE_ME) {
|
||||
UserModel.get().updateCurrentUserInfo().subscribe();
|
||||
}
|
||||
|
||||
switch (tabType) {
|
||||
case MainTabType.TAB_TYPE_HOME:
|
||||
reportTabClick(IReportConstants.ELEVEN);
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_MSG:
|
||||
reportTabClick(IReportConstants.THIRTEEN);
|
||||
break;
|
||||
case MainTabType.TAB_TYPE_ME:
|
||||
reportTabClick(IReportConstants.FOURTEEN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导航栏tab板块点击
|
||||
*
|
||||
* @param type
|
||||
*/
|
||||
private void reportTabClick(int type) {
|
||||
//登录页展示时
|
||||
HashMap<String, Object> map = new HashMap<>(3);
|
||||
map.put(IReportConstants.HOMEPAGE_TYPE, type);
|
||||
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE);
|
||||
ReportManager.get().reportEvent(IReportConstants.MODULE_HOMEPAGE_CLICK, map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitRoom(RoomInfo roomInfo) {
|
||||
closeOpenRoomAnimation();
|
||||
DaemonService.stop(MainActivity.this);
|
||||
}
|
||||
|
||||
/**
|
||||
* 第一次加载到用户信息
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void firstLoadedUserInfo() {
|
||||
//青少年弹窗处理
|
||||
PmDialogShowMrg.get().handle(new WeakReference<>(this));
|
||||
|
||||
handleChannelPageInfo();
|
||||
|
||||
checkProtocolUpdate();
|
||||
|
||||
// 互动消息未读数量
|
||||
HomeModel.INSTANCE.getUnreadCount(AuthModel.get().getCurrentUid())
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe((integer, throwable) -> {
|
||||
if (integer != null) {
|
||||
EventBus.getDefault().post(new UnReadCountEvent(integer));
|
||||
}
|
||||
});
|
||||
// checkShowAnchorCardView();
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void checkProtocolUpdate() {
|
||||
UserModel.get()
|
||||
.getProtocolInfo()
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(protocolInfo -> {
|
||||
float version = (float) SharedPreferenceUtils.get(ProtocolUpdateDialog.SP_KEY, 0f);
|
||||
//第一次打开APP不弹,因为闪屏页已经弹了!
|
||||
if (version == 0f) {
|
||||
SharedPreferenceUtils.put(ProtocolUpdateDialog.SP_KEY, protocolInfo.getVer());
|
||||
} else if (version < protocolInfo.getVer()) {
|
||||
new ProtocolUpdateDialog(MainActivity.this, protocolInfo).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转优先级 闪屏→linkedMe→邀请码→新用户打招呼引导→渠道指定房间
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void handleChannelPageInfo() {
|
||||
|
||||
if (handleSplashJump()) return;
|
||||
if (handleLinkedJump(this)) return;
|
||||
|
||||
//渠道落地页和邀请码跳转只需要完善资料后处理一次
|
||||
String spKey = KEY_FLAG_VALID_CHANNEL_PAGE + AuthModel.get().getCurrentUid();
|
||||
if ((boolean) SharedPreferenceUtils.get(spKey, true)) {
|
||||
SharedPreferenceUtils.put(spKey, false);
|
||||
checkInviteUserInRoom();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查邀请码跳转
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void checkInviteUserInRoom() {
|
||||
if (!TextUtils.isEmpty(AddUserInfoFragment.INVITE_USER_CODE)) {
|
||||
ChannelPageModel.get().checkInviteUserInRoom(AddUserInfoFragment.INVITE_USER_CODE)
|
||||
.subscribe(inviteUserInfo -> {
|
||||
if (inviteUserInfo.isInRoom()) {
|
||||
if (inviteUserInfo.getFromType() == 0) {
|
||||
AVRoomActivity.start(context, inviteUserInfo.getRoomUid());
|
||||
} else {
|
||||
AVRoomActivity.startForFromType(context,
|
||||
inviteUserInfo.getRoomUid(),
|
||||
inviteUserInfo.getFromType(),
|
||||
inviteUserInfo.getInviteNick(),
|
||||
String.valueOf(inviteUserInfo.getInviteUid()));
|
||||
}
|
||||
} else {
|
||||
checkNewUserInRoom();
|
||||
}
|
||||
}, throwable -> checkNewUserInRoom());
|
||||
AddUserInfoFragment.INVITE_USER_CODE = "";
|
||||
} else {
|
||||
checkNewUserInRoom();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void checkNewUserInRoom() {
|
||||
ChannelPageModel.get().checkNewUserInRoom()
|
||||
.subscribe(newUserHelloInfo -> {
|
||||
if (newUserHelloInfo.getSayHello()) {
|
||||
NewUserHelloDialog.Companion.newInstance(newUserHelloInfo).show(context);
|
||||
} else {
|
||||
checkChannelPageInRoom();
|
||||
}
|
||||
}, throwable -> checkChannelPageInRoom());
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理渠道落地页
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void checkChannelPageInRoom() {
|
||||
GameHomeModel.get().getRoomShortcut()
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(uid -> {
|
||||
if (StringFormatUtils.toLong(uid) != 0) {
|
||||
AVRoomActivity.start(context, StringFormatUtils.toLong(uid));
|
||||
}
|
||||
},
|
||||
Throwable::printStackTrace);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true 如果处理了跳转
|
||||
*/
|
||||
private boolean handleSplashJump() {
|
||||
if (getIntent().hasExtra("url") && getIntent().hasExtra("type")) {
|
||||
LogUtil.print(getString(R.string.clicked_the_splash_screen));
|
||||
//如果没有渠道页,就按原来的逻辑即可
|
||||
int type = getIntent().getIntExtra("type", 0);
|
||||
String url = getIntent().getStringExtra("url");
|
||||
if (type == 3) {
|
||||
Intent intent = new Intent(context, CommonWebViewActivity.class);
|
||||
intent.putExtra("url", url);
|
||||
startActivity(intent);
|
||||
} else if (type == 2) {
|
||||
AVRoomActivity.start(context, Long.parseLong(url));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public LimitEnterRoomHelper getLimitEnterRoomHelper() {
|
||||
if (limitEnterRoomHelper == null) {
|
||||
limitEnterRoomHelper = new LimitEnterRoomHelper();
|
||||
}
|
||||
return limitEnterRoomHelper;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onImPushMsgPmLimitTimeEvent(ImPushMsgPmLimitTimeEvent event) {
|
||||
//先判断Avroom存不存在,存在的话则不处理,avroom会处理
|
||||
Activity reference = App.gStack.getAvRoomActivity();
|
||||
if (reference != null) {
|
||||
return;
|
||||
}
|
||||
getLimitEnterRoomHelper().handleThisContext(this, event.getData(), true, this::handlePmExitRoom);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onPmDismissAllLimitDialogEvent(PmDismissAllLimitDialogEvent event) {
|
||||
if (limitEnterRoomHelper != null) {
|
||||
limitEnterRoomHelper.dismissDialog();
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void SquarePublish(SquareTaskEvent event) {
|
||||
}
|
||||
|
||||
private void handlePmExitRoom() {
|
||||
if (AvRoomDataManager.get().mCurrentRoomInfo != null) {
|
||||
closeOpenRoomAnimation();
|
||||
getMvpPresenter().exitRoom();
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onCloseMinRoomEvent(CloseMinRoomEvent event) {
|
||||
//如果房间存在,就关闭
|
||||
if (AvRoomDataManager.get().mCurrentRoomInfo != null) {
|
||||
handlePmExitRoom();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理开房限制时长
|
||||
*/
|
||||
public void handleOpenRoomWhenPmLimit(String error) {
|
||||
getLimitEnterRoomHelper().handleThisContext(this, error, false, this::handlePmExitRoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* 云信通知栏跳转的处理
|
||||
*/
|
||||
private void handleNimIntent() {
|
||||
openCommunityNotice();
|
||||
|
||||
Intent intent = getIntent();
|
||||
if (intent == null) {
|
||||
return;
|
||||
}
|
||||
boolean isNimPush = intent.getBooleanExtra(NimMiddleActivity.EXTRA_IS_NIM_PUSH, false);
|
||||
if (isNimPush && mMainTabLayout != null) {
|
||||
mMainTabLayout.setDefaultTabType(MainTabType.TAB_TYPE_MSG);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击互动通知通知栏,重启进程打开互动通知页
|
||||
*/
|
||||
private void openCommunityNotice() {
|
||||
if (NimMiddleActivity.delayOpenCommunity) {
|
||||
return;
|
||||
}
|
||||
if (NimMiddleActivity.openCommunity) {
|
||||
NimMiddleActivity.openCommunity = false;
|
||||
if (NimMiddleActivity.skipType == 0) return;
|
||||
new Handler().postDelayed(() -> {
|
||||
if (NimMiddleActivity.skipType == PushMessageHandler.PAYLOAD_SKIPTYPE_INVITE_FANS &&
|
||||
NimMiddleActivity.payloadUid > 0) {
|
||||
AVRoomActivity.start(MainActivity.this, NimMiddleActivity.payloadUid);
|
||||
} else if (NimMiddleActivity.skipType == PushMessageHandler.PAYLOAD_SKIPTYPE_PRIVATE_MSG &&
|
||||
NimMiddleActivity.payloadUid > 0) {
|
||||
NimP2PMessageActivity.start(MainActivity.this, NimMiddleActivity.payloadUid + "");
|
||||
} else if (NimMiddleActivity.skipType == PushMessageHandler.PAYLOAD_SKIPTYPE_H5 &&
|
||||
!TextUtils.isEmpty(NimMiddleActivity.payloadUrl)) {
|
||||
CommonWebViewActivity.start(MainActivity.this, NimMiddleActivity.payloadUrl);
|
||||
}
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onNeedBindPhoneEvent(NeedBindPhoneEvent event) {
|
||||
// checkBindPhone();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
|
||||
public void onVisitorUnreadCountEvent(VisitorUnreadCountEvent event) {
|
||||
if (mMainTabLayout != null) {
|
||||
mMainTabLayout.setUnreadVisitorCount(event.getVisitNum());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.avatar_image:
|
||||
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (roomInfo != null) {
|
||||
AVRoomActivity.start(MainActivity.this, roomInfo.getUid());
|
||||
} else {
|
||||
toast(getString(R.string.room_information_is_empty));
|
||||
}
|
||||
|
||||
break;
|
||||
case R.id.view_close:
|
||||
MainActivity.this.getMvpPresenter().exitRoom();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean needSteepStateBar() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setStatusBar() {
|
||||
super.setStatusBar();
|
||||
StatusBarUtil.transparencyBar(this);
|
||||
StatusBarUtil.StatusBarLightMode(this);
|
||||
}
|
||||
|
||||
}
|
4
app/src/main/java/com/chwl/app/MainTabContentView.kt
Normal file
@@ -0,0 +1,4 @@
|
||||
package com.chwl.app
|
||||
|
||||
interface MainTabContentView {
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu;
|
||||
package com.chwl.app;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
@@ -10,19 +10,18 @@ import com.coorchice.library.utils.LogUtils;
|
||||
import com.netease.nimlib.sdk.NimIntent;
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.IMMessage;
|
||||
import com.yizhuan.habu.avroom.activity.AVRoomActivity;
|
||||
import com.yizhuan.habu.base.BaseActivity;
|
||||
import com.yizhuan.habu.radish.signin.SignInActivity;
|
||||
import com.yizhuan.habu.ui.im.avtivity.NimP2PMessageActivity;
|
||||
import com.yizhuan.habu.ui.webview.CommonWebViewActivity;
|
||||
import com.yizhuan.habu.utils.PushMessageHandler;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.OpenRoomNotiAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment;
|
||||
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansAttachment;
|
||||
import com.yizhuan.xchat_android_library.utils.UIUtils;
|
||||
import com.chwl.app.avroom.activity.AVRoomActivity;
|
||||
import com.chwl.app.base.BaseActivity;
|
||||
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity;
|
||||
import com.chwl.app.utils.PushMessageHandler;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.im.custom.bean.CustomAttachment;
|
||||
import com.chwl.core.im.custom.bean.OpenRoomNotiAttachment;
|
||||
import com.chwl.core.im.custom.bean.OpenSignInAttachment;
|
||||
import com.chwl.core.im.custom.bean.RedPackageAttachment;
|
||||
import com.chwl.core.im.custom.bean.RoomInviteFansAttachment;
|
||||
import com.chwl.library.utils.UIUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
@@ -106,11 +105,6 @@ public class NimMiddleActivity extends BaseActivity {
|
||||
if (noticeAttachment.getUid() > 0) {
|
||||
AVRoomActivity.start(this, noticeAttachment.getUid());
|
||||
}
|
||||
} else if (attachment instanceof OpenSignInAttachment) {
|
||||
if (AuthModel.get().isImLogin()
|
||||
&& !UIUtils.isTopActivity(this, SignInActivity.class.getSimpleName())) {
|
||||
SignInActivity.start(this);
|
||||
}
|
||||
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MSG_RED_PACKAGE) {
|
||||
if (attachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND) {
|
||||
RedPackageAttachment redPackageAttachment = (RedPackageAttachment) attachment;
|
@@ -1,22 +1,21 @@
|
||||
package com.yizhuan.habu;
|
||||
package com.chwl.app;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.yizhuan.habu.audio.MyVoiceActivity;
|
||||
import com.yizhuan.habu.audio.RecordingVoiceActivity;
|
||||
import com.yizhuan.habu.audio.SoundSignatureActivity;
|
||||
import com.yizhuan.habu.ui.login.AddUserInfoActivity;
|
||||
import com.yizhuan.habu.ui.login.ModifyInfoActivity;
|
||||
import com.yizhuan.habu.ui.setting.SettingActivity;
|
||||
import com.yizhuan.habu.ui.user.activity.EditUserLabelActivity;
|
||||
import com.yizhuan.habu.ui.user.activity.UserInfoActivity;
|
||||
import com.yizhuan.habu.ui.user.activity.UserInfoModifyActivity;
|
||||
import com.yizhuan.habu.ui.user.activity.UserModifyPhotosActivity;
|
||||
import com.yizhuan.habu.ui.webview.CommonWebViewActivity;
|
||||
import com.yizhuan.xchat_android_core.UriProvider;
|
||||
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
|
||||
import com.chwl.app.audio.MyVoiceActivity;
|
||||
import com.chwl.app.audio.RecordingVoiceActivity;
|
||||
import com.chwl.app.audio.SoundSignatureActivity;
|
||||
import com.chwl.app.ui.login.AddUserInfoActivity;
|
||||
import com.chwl.app.ui.login.ModifyInfoActivity;
|
||||
import com.chwl.app.ui.setting.SettingActivity;
|
||||
import com.chwl.app.ui.user.activity.UserInfoActivity;
|
||||
import com.chwl.app.ui.user.activity.UserInfoModifyActivity;
|
||||
import com.chwl.app.ui.user.activity.UserModifyPhotosActivity;
|
||||
import com.chwl.app.ui.webview.CommonWebViewActivity;
|
||||
import com.chwl.core.UriProvider;
|
||||
import com.chwl.core.user.bean.UserInfo;
|
||||
|
||||
|
||||
/**
|
||||
@@ -108,12 +107,7 @@ public class UIHelper {
|
||||
|
||||
public static void showMonsterResult(Context context, String monsterId) {
|
||||
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL +
|
||||
"/anan_vestBag/modules/monster/index.html?monsterId=" + monsterId);
|
||||
}
|
||||
|
||||
public static void showLabelInfoAct(Activity mActivity, int requestCode) {
|
||||
Intent intent = new Intent(mActivity, EditUserLabelActivity.class);
|
||||
mActivity.startActivityForResult(intent, requestCode);
|
||||
"/molistar/modules/monster/index.html?monsterId=" + monsterId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,11 +126,11 @@ public class UIHelper {
|
||||
*/
|
||||
public static void showRecommendPosH5(Context context) {
|
||||
String cardUrl = UriProvider.JAVA_WEB_URL +
|
||||
"/anan_vestBag/modules/recommend-card/index.html";
|
||||
"/molistar/modules/recommend-card/index.html";
|
||||
CommonWebViewActivity.start(context, cardUrl);
|
||||
}
|
||||
|
||||
public static void openContactUs(Context context) {
|
||||
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL + "/anan_vestBag/modules/contact/contact.html");
|
||||
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL + "/molistar/modules/contact/contact.html");
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu;
|
||||
package com.chwl.app;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -8,8 +8,8 @@ import android.widget.ImageView;
|
||||
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.yizhuan.habu.base.BaseActivity;
|
||||
import com.yizhuan.xchat_android_core.PreferencesUtils;
|
||||
import com.chwl.app.base.BaseActivity;
|
||||
import com.chwl.core.PreferencesUtils;
|
||||
|
||||
|
||||
public class UserGuideActivity extends BaseActivity {
|
575
app/src/main/java/com/chwl/app/application/App.java
Normal file
@@ -0,0 +1,575 @@
|
||||
package com.chwl.app.application;
|
||||
|
||||
import static com.chwl.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.net.http.HttpResponseCache;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.util.Supplier;
|
||||
import androidx.multidex.MultiDex;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.bumptech.glide.request.target.ViewTarget;
|
||||
import com.chwl.app.support.IMUserInfoProvider;
|
||||
import com.chwl.library.language.LanguageHelper;
|
||||
import com.coorchice.library.utils.LogUtils;
|
||||
import com.example.lib_utils.ServiceTime;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.liulishuo.filedownloader.FileDownloader;
|
||||
import com.netease.nim.uikit.api.NimUIKit;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.NotificationFoldStyle;
|
||||
import com.netease.nimlib.sdk.SDKOptions;
|
||||
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
|
||||
import com.netease.nimlib.sdk.mixpush.MixPushConfig;
|
||||
import com.netease.nimlib.sdk.mixpush.NIMPushClient;
|
||||
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.IMMessage;
|
||||
import com.netease.nimlib.sdk.util.NIMUtil;
|
||||
import com.opensource.svgaplayer.SVGAParser;
|
||||
import com.orhanobut.logger.AndroidLogAdapter;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.scwang.smartrefresh.header.MaterialHeader;
|
||||
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
|
||||
import com.tencent.vasdolly.helper.ChannelReaderUtil;
|
||||
import com.chwl.app.BuildConfig;
|
||||
import com.chwl.app.NimMiddleActivity;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.common.app.ActivityStack;
|
||||
import com.chwl.app.common.util.AppLifeCycleHelper;
|
||||
import com.chwl.app.module_hall.HallDataManager;
|
||||
import com.chwl.app.radish.wallet.RadishWalletManager;
|
||||
import com.chwl.app.utils.PushMessageHandler;
|
||||
import com.chwl.core.XConstants;
|
||||
import com.chwl.core.Constants;
|
||||
import com.chwl.core.DemoCache;
|
||||
import com.chwl.core.UriProvider;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.bean.response.ServiceResult;
|
||||
import com.chwl.core.channel.ChannelModel;
|
||||
import com.chwl.core.family.model.FamilyModel;
|
||||
import com.chwl.core.gift.GiftModel;
|
||||
import com.chwl.core.im.custom.bean.CustomAttachment;
|
||||
import com.chwl.core.im.custom.bean.OpenSignInAttachment;
|
||||
import com.chwl.core.initial.InitialModel;
|
||||
import com.chwl.core.interceptor.NoParamsInterceptor;
|
||||
import com.chwl.core.interceptor.ParamsInterceptor;
|
||||
import com.chwl.core.interceptor.TimeSyncInterceptor;
|
||||
import com.chwl.core.manager.IMMessageManager;
|
||||
import com.chwl.core.manager.IMSystemMsgManager;
|
||||
import com.chwl.core.market_verify.MarketVerifyModel;
|
||||
import com.chwl.core.pay.PayModel;
|
||||
import com.chwl.core.radish.RadishModel;
|
||||
import com.chwl.core.radish.signin.bean.ImNotice;
|
||||
import com.chwl.core.room.face.DynamicFaceModel;
|
||||
import com.chwl.core.user.UserModel;
|
||||
import com.chwl.core.user.event.NeedCompleteInfoEvent;
|
||||
import com.chwl.core.utils.SharedPreferenceUtils;
|
||||
import com.chwl.core.utils.net.ServerException;
|
||||
import com.chwl.library.common.application.BaseApp;
|
||||
import com.chwl.library.common.application.Env;
|
||||
import com.chwl.library.common.file.FileHelper;
|
||||
import com.chwl.library.net.rxnet.RxNet;
|
||||
import com.chwl.library.net.rxnet.converter.GsonConverterPlugins;
|
||||
import com.chwl.library.utils.AppMetaDataUtil;
|
||||
import com.chwl.library.utils.DeviceUuidFactory;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
import com.chwl.library.utils.SystemUtils;
|
||||
import com.chwl.library.utils.VersionUtil;
|
||||
import com.chwl.library.utils.codec.MD5Utils;
|
||||
import com.chwl.library.utils.config.BasicConfig;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import io.reactivex.plugins.RxJavaPlugins;
|
||||
import io.realm.Realm;
|
||||
import io.realm.RealmConfiguration;
|
||||
|
||||
/**
|
||||
* @author chenran
|
||||
* @date 2017/2/11
|
||||
*/
|
||||
|
||||
public class App extends BaseApp {
|
||||
public static final String TAG = "XChatApplication";
|
||||
public static Application gContext;
|
||||
|
||||
// 接收到退出登录事件(跳转到登录页了)
|
||||
private static long logoutEventTime = 0;
|
||||
|
||||
private static final MessageNotifierCustomization messageNotifierCustomization = new MessageNotifierCustomization() {
|
||||
@Override
|
||||
public String makeNotifyContent(String nick, IMMessage message) {
|
||||
if (message.getMsgType() == MsgTypeEnum.custom) {
|
||||
CustomAttachment customAttachment = (CustomAttachment) message.getAttachment();
|
||||
if (customAttachment.getFirst() == CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI) {
|
||||
return message.getFromNick();
|
||||
} else if (customAttachment instanceof OpenSignInAttachment) {
|
||||
return getContentFromOpenSignIn(customAttachment);
|
||||
}
|
||||
}
|
||||
// 采用SDK默认文案
|
||||
return ResUtil.getString(R.string.erban_application_xchatapplication_01);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String makeTicker(String nick, IMMessage message) {
|
||||
if (message.getMsgType() == MsgTypeEnum.custom) {
|
||||
CustomAttachment customAttachment = (CustomAttachment) message.getAttachment();
|
||||
if (customAttachment != null) {
|
||||
if (customAttachment.getFirst() == CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI) {
|
||||
return message.getFromNick();
|
||||
} else if (customAttachment instanceof OpenSignInAttachment) {
|
||||
return getContentFromOpenSignIn(customAttachment);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 采用SDK默认文案
|
||||
return ResUtil.getString(R.string.erban_application_xchatapplication_02);
|
||||
}
|
||||
|
||||
private String getContentFromOpenSignIn(CustomAttachment attachment) {
|
||||
String result = null;
|
||||
if (attachment instanceof OpenSignInAttachment) {
|
||||
ImNotice notice = ((OpenSignInAttachment) attachment).getImNotice();
|
||||
if (notice != null) {
|
||||
result = notice.getContent();
|
||||
}
|
||||
}
|
||||
if (TextUtils.isEmpty(result)) {
|
||||
result = ResUtil.getString(R.string.erban_application_xchatapplication_03);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String makeRevokeMsgTip(String s, IMMessage imMessage) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String makeCategory(IMMessage message) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
private static App instance;
|
||||
//生命周期监听
|
||||
private static AppLifeCycleHelper lifeCycleHelper;
|
||||
public static ActivityStack gStack = new ActivityStack();
|
||||
private static boolean isInitOtherSDK = false;
|
||||
|
||||
//static 代码段可以防止内存泄露
|
||||
static {
|
||||
SmartRefreshLayout.setDefaultRefreshHeaderCreater(
|
||||
(context, layout) -> {
|
||||
layout.setEnableHeaderTranslationContent(false);
|
||||
MaterialHeader materialHeader = new MaterialHeader(context);
|
||||
materialHeader.setShowBezierWave(false);
|
||||
return materialHeader;
|
||||
});
|
||||
SmartRefreshLayout.setDefaultRefreshFooterCreater(
|
||||
(context, layout) -> new ClassicsFooter(context).setDrawableSize(20));
|
||||
}
|
||||
|
||||
public static App instance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static void initOtherSDK() {
|
||||
if (isInitOtherSDK) return;
|
||||
isInitOtherSDK = true;
|
||||
Context context = BasicConfig.INSTANCE.getAppContext();
|
||||
Application application = (Application) context.getApplicationContext();
|
||||
// 初始化 sp
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
String channel = "";
|
||||
channel = ChannelReaderUtil.getChannel(instance);
|
||||
Log.d("APP", "localChannel:" + channel);
|
||||
if (TextUtils.isEmpty(channel)) {
|
||||
channel = Constants.GOOGLE;
|
||||
}
|
||||
Log.d("APP", "finalChannel:" + channel);
|
||||
BasicConfig.INSTANCE.setOriginalChannel(channel);
|
||||
|
||||
BasicConfig.INSTANCE.setChannel(channel);
|
||||
|
||||
initEnv();
|
||||
|
||||
// ARouter
|
||||
if (isDebug()) { // These two lines must be written before init, otherwise these configurations will be invalid in the init process
|
||||
ARouter.openLog(); // Print log
|
||||
ARouter.openDebug(); // Turn on debugging mode (If you are running in InstantRun mode, you must turn on debug mode! Online version needs to be closed, otherwise there is a security risk)
|
||||
}
|
||||
ARouter.init(application); // As early as possible, it is recommended to initialize in the Application
|
||||
|
||||
//延迟初始化云信
|
||||
NIMClient.init(context, null, options());
|
||||
|
||||
//logger 配置
|
||||
Logger.addLogAdapter(new AndroidLogAdapter() {
|
||||
@Override
|
||||
public boolean isLoggable(int priority, String tag) {
|
||||
return BuildConfig.DEBUG;
|
||||
}
|
||||
});
|
||||
|
||||
ToastUtils.init(application);
|
||||
|
||||
if (inMainProcess(context)) {
|
||||
DemoCache.saveLaunchCount();
|
||||
// 注册自定义推送消息处理,这个是可选项
|
||||
NIMPushClient.registerMixPushMessageHandler(new PushMessageHandler());
|
||||
|
||||
RxJavaPlugins.setErrorHandler(throwable -> {
|
||||
if (BuildConfig.DEBUG) {
|
||||
Log.e(TAG, "the subscribe() method default error handler", throwable);
|
||||
}
|
||||
});
|
||||
|
||||
//需要完善资料错误码全局处理
|
||||
GsonConverterPlugins.setResultHandler(result -> {
|
||||
if (result instanceof ServiceResult<?>) {
|
||||
ServiceResult<?> serviceResult = (ServiceResult<?>) result;
|
||||
if (serviceResult.getCode() == ServiceResult.CODE_NEED_COMPLETE_USER_INFO) {
|
||||
SingleToastUtil.showToast(serviceResult.getMessage());
|
||||
EventBus.getDefault().post(new NeedCompleteInfoEvent());
|
||||
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
|
||||
} else if (serviceResult.getCode() == 401) {
|
||||
if ((ServiceTime.INSTANCE.getTime() - logoutEventTime) > 800) {
|
||||
logoutEventTime = ServiceTime.INSTANCE.getTime();
|
||||
SingleToastUtil.showToast(serviceResult.getMessage());
|
||||
AuthModel.get().cleanLogInfo();
|
||||
}
|
||||
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
});
|
||||
GsonConverterPlugins.lockdown();
|
||||
|
||||
|
||||
//fixed: Glide Exception:"You must not call setTag() on a view Glide is targeting"
|
||||
ViewTarget.setTagId(R.id.tag_glide);
|
||||
|
||||
init(channel);
|
||||
|
||||
//生命周期监听
|
||||
if (lifeCycleHelper == null) {
|
||||
lifeCycleHelper = new AppLifeCycleHelper();
|
||||
}
|
||||
registerActivityLifecycleCallback(lifeCycleHelper);
|
||||
// initLinkedMe();
|
||||
// MobSDK.init(context);
|
||||
// MobSDK.submitPolicyGrantResult(true);
|
||||
}
|
||||
|
||||
LogUtils.d("init time = " + (System.currentTimeMillis() - startTime) + "ms");
|
||||
|
||||
}
|
||||
|
||||
public static void registerActivityLifecycleCallback(Application.ActivityLifecycleCallbacks callbacks) {
|
||||
((Application) BasicConfig.INSTANCE.getAppContext().getApplicationContext()).registerActivityLifecycleCallbacks(callbacks);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 初始化linkedMe
|
||||
// */
|
||||
// private static void initLinkedMe() {
|
||||
// MobSDK.init(instance, "32fd2f8457880", "ef796ca85e8cd95a76929663de133214");
|
||||
// MobLink.setRestoreSceneListener(new RestoreSceneListener() {
|
||||
// @Override
|
||||
// public Class<? extends Activity> willRestoreScene(Scene scene) {
|
||||
// return AgentActivity.class;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void completeRestore(Scene scene) {
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void notFoundScene(Scene scene) {
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
|
||||
private static void initEnv() {
|
||||
//首先初始化环境
|
||||
Env.initEnv(BuildConfig.BUILD_TYPE, BuildConfig.DEBUG);
|
||||
//切换生产坏境和测试环境 true/测试环境 false/生产环境
|
||||
BasicConfig.INSTANCE.setDebuggable(Env.isDebug());
|
||||
BasicConfig.INSTANCE.setRootDir(Constants.ERBAN_DIR_NAME);
|
||||
BasicConfig.INSTANCE.setLogDir(Constants.LOG_DIR);
|
||||
BasicConfig.INSTANCE.setConfigDir(Constants.CONFIG_DIR);
|
||||
BasicConfig.INSTANCE.setVoiceDir(Constants.VOICE_DIR);
|
||||
BasicConfig.INSTANCE.setCacheDir(Constants.CACHE_DIR);
|
||||
BasicConfig.INSTANCE.setImageDir(Constants.IMAGE_CACHE_DIR);
|
||||
com.example.lib_utils.log.LogUtil.INSTANCE.setConsolePrinterEnabled(BuildConfig.DEBUG);
|
||||
}
|
||||
|
||||
/**
|
||||
* 云信配置
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SDKOptions options() {
|
||||
SDKOptions options = new SDKOptions();
|
||||
options.disableAwake = true;
|
||||
options.asyncInitSDK = true;
|
||||
// options.customPushContentType = "";
|
||||
if (isDebug()) {
|
||||
options.checkManifestConfig = true;
|
||||
}
|
||||
// 如果将新消息通知提醒托管给 SDK 完成,需要添加以下配置。否则无需设置。
|
||||
StatusBarNotificationConfig config = new StatusBarNotificationConfig();
|
||||
// 点击通知栏跳转到该Activity
|
||||
config.notificationEntrance = NimMiddleActivity.class;
|
||||
// config.notificationSmallIconId = R.drawable.icon_msg_normal;
|
||||
// 呼吸灯配置
|
||||
config.ledARGB = Color.GREEN;
|
||||
config.ledOnMs = 1000;
|
||||
config.ledOffMs = 1500;
|
||||
config.notificationFoldStyle = NotificationFoldStyle.CONTACT;
|
||||
// 通知铃声的uri字符串
|
||||
config.notificationSound = "android.resource://com.netease.nim.demo/raw/msg";
|
||||
options.statusBarNotificationConfig = config;
|
||||
// 定制通知栏提醒文案(可选,如果不定制将采用SDK默认文案)
|
||||
options.messageNotifierCustomization = messageNotifierCustomization;
|
||||
|
||||
options.appKey = Constants.nimAppKey;
|
||||
|
||||
// 配置保存图片,文件,log 等数据的目录
|
||||
// 如果 options 中没有设置这个值,SDK 会使用下面代码示例中的位置作为 SDK 的数据目录。
|
||||
// 该目录目前包含 log, file, image, audio, video, thumb 这6个目录。
|
||||
// 如果第三方 APP 需要缓存清理功能, 清理这个目录下面个子目录的内容即可。
|
||||
String sdkPath = null;
|
||||
try {
|
||||
sdkPath = FileHelper.getRootCacheDir().getAbsolutePath() + "/nim";
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
|
||||
}
|
||||
options.sdkStorageRootPath = sdkPath;
|
||||
|
||||
// 配置是否需要预下载附件缩略图,默认为 true
|
||||
options.preloadAttach = true;
|
||||
|
||||
// 配置附件缩略图的尺寸大小。表示向服务器请求缩略图文件的大小
|
||||
// 该值一般应根据屏幕尺寸来确定, 默认值为 Screen.width / 2
|
||||
int widthPixels = BasicConfig.INSTANCE.getAppContext().getResources().getDisplayMetrics().widthPixels;
|
||||
options.thumbnailSize = widthPixels / 2;
|
||||
// // save cache,留做切换账号备用
|
||||
DemoCache.setNotificationConfig(config);
|
||||
|
||||
MixPushConfig mixPushConfig = new MixPushConfig();
|
||||
|
||||
|
||||
options.mixPushConfig = mixPushConfig;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前进程是否主进程
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
private static boolean inMainProcess(Context context) {
|
||||
String packageName = context.getPackageName();
|
||||
String processName = NIMUtil.getProcessName(context);
|
||||
return packageName.equals(processName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化RxNet
|
||||
*
|
||||
* @param context
|
||||
* @param url
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
public static void initRxNet(Context context, String url) {
|
||||
Map<String, String> httpParams = new ConcurrentHashMap<>();
|
||||
httpParams.put("os", "android");
|
||||
httpParams.put("osVersion", Build.VERSION.RELEASE);
|
||||
httpParams.put("app", XConstants.APP_MARK);
|
||||
httpParams.put("ispType", String.valueOf(SystemUtils.getIspType(context)));
|
||||
httpParams.put("netType", String.valueOf(SystemUtils.getNetworkType(context)));
|
||||
httpParams.put("model", SystemUtils.getPhoneModel());
|
||||
httpParams.put("appVersion", VersionUtil.getLocalName(context));
|
||||
httpParams.put("appVersionCode", String.valueOf(VersionUtil.getVersionCode(context)));
|
||||
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
|
||||
httpParams.put("androidId", MD5Utils.getMD5String(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)));
|
||||
httpParams.put("channel", AppMetaDataUtil.getChannelID());
|
||||
httpParams.put("lang", LanguageHelper.INSTANCE.getSystemLanguage().toLanguageTag());
|
||||
RxNet.init(context)
|
||||
.debug(Env.isRealDebug())
|
||||
.setBaseUrl(url)
|
||||
.addInterceptors(new ParamsInterceptor(httpParams))
|
||||
.addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序
|
||||
.addInterceptors(new TimeSyncInterceptor())
|
||||
.certificates()
|
||||
.build();
|
||||
//单例的model 初始化
|
||||
initModel();
|
||||
}
|
||||
|
||||
private static void init(String channel) {
|
||||
initNimUIKit();
|
||||
UriProvider.initUri(BuildConfig.BASE_URL_DEBUG, BuildConfig.BASE_URL_STAGING, BuildConfig.BASE_URL_RELEASE);
|
||||
SVGAParser.Companion.shareParser().init(BasicConfig.INSTANCE.getAppContext());
|
||||
try {
|
||||
/** svga动画缓存路径 */
|
||||
String cacheDirPath = FileHelper.getRootCacheDir().getAbsolutePath();
|
||||
File cacheFie = new File(cacheDirPath, "cacheDir");
|
||||
HttpResponseCache.install(cacheFie, 1024 * 1024 * 128);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "HttpResponseCache install error :" + e.getMessage());
|
||||
}
|
||||
|
||||
initRxNet(BasicConfig.INSTANCE.getAppContext(), UriProvider.JAVA_WEB_URL);
|
||||
|
||||
/**
|
||||
* 使用到realm 数据库,这里配置数据库 这里必须先于模块初始化前进行初始化配置
|
||||
*/
|
||||
Realm.init(BasicConfig.INSTANCE.getAppContext());
|
||||
RealmConfiguration config = new RealmConfiguration.Builder()
|
||||
.name("accompany.realm")
|
||||
.deleteRealmIfMigrationNeeded()
|
||||
.build();
|
||||
Realm.setDefaultConfiguration(config);
|
||||
|
||||
FileDownloader.setup(BasicConfig.INSTANCE.getAppContext());
|
||||
LogUtil.i(TAG, channel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一些单例的 model
|
||||
*/
|
||||
private static void initModel() {
|
||||
DynamicFaceModel.get().init();
|
||||
PayModel.get();
|
||||
UserModel.get();
|
||||
//ui层的萝卜钱包
|
||||
RadishWalletManager.get();
|
||||
//model层的
|
||||
RadishModel.get();
|
||||
|
||||
IMMessageManager.get().init();
|
||||
IMSystemMsgManager.get().init();
|
||||
|
||||
FamilyModel.Instance();
|
||||
AuthModel.get();
|
||||
|
||||
ChannelModel.get();
|
||||
MarketVerifyModel.get();
|
||||
GiftModel.get();
|
||||
// 模厅
|
||||
HallDataManager.get().application();
|
||||
//全局处理
|
||||
GlobalHandleManager.get().init();
|
||||
|
||||
InitialModel.get().init(true).subscribe();
|
||||
|
||||
//上报平台初始化
|
||||
ReportManager.get().init();
|
||||
}
|
||||
|
||||
private static void initNimUIKit() {
|
||||
// 初始化
|
||||
NimUIKit.init(BasicConfig.INSTANCE.getAppContext(), new IMUserInfoProvider(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* debug 环境 受到实验室模式影响
|
||||
*/
|
||||
public static boolean isDebug() {
|
||||
return Env.isDebug();
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是真实的debug的环境 不受实验室模式影响
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean isRealDebug() {
|
||||
return Env.isRealDebug();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户没同意隐私协议之前,啥也不干!!
|
||||
*/
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
instance = this;
|
||||
BaseApp.init(this);
|
||||
BasicConfig.INSTANCE.setAppContext(this.getApplicationContext());
|
||||
SharedPreferenceUtils.init(this);
|
||||
ResUtil.init(this);
|
||||
ResUtil.contextSupplier = () -> App.gStack.getTopContext();
|
||||
LanguageHelper.INSTANCE.wrapContext(instance);
|
||||
initOtherSDK();
|
||||
initContext(this);
|
||||
//首次启动事件
|
||||
HashMap<String, Object> map = new HashMap<>(2);
|
||||
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_ACTIVATE);
|
||||
ReportManager.get().reportEvent(IReportConstants.ACTIVATE_FIRST, map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化Application实例
|
||||
*/
|
||||
public void initContext(Application application) {
|
||||
gContext = application;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 获取Application实例
|
||||
*/
|
||||
public static Application getApplication() {
|
||||
return gContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(base);
|
||||
MultiDex.install(base);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
LanguageHelper.INSTANCE.wrapContext(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTerminate() {
|
||||
super.onTerminate();
|
||||
GlobalHandleManager.get().unInit();
|
||||
if (lifeCycleHelper != null) {
|
||||
unregisterActivityLifecycleCallbacks(lifeCycleHelper);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,115 @@
|
||||
package com.chwl.app.application;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.chwl.app.avroom.newuserchargegift.NewUserChargePrizeDialog;
|
||||
import com.chwl.app.relation.cp.dialog.CpGlobalDialog;
|
||||
import com.chwl.app.ui.widget.LevelUpDialog;
|
||||
import com.chwl.app.ui.widget.RecallDialog;
|
||||
import com.chwl.app.vip.dialog.VipUpgradeDialog;
|
||||
import com.chwl.core.level.event.CharmLevelUpEvent;
|
||||
import com.chwl.core.level.event.LevelUpEvent;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.pay.event.NewUserChargeEvent;
|
||||
import com.chwl.core.recall.bean.CheckLostUserInfo;
|
||||
import com.chwl.core.recall.event.CheckLostUserEvent;
|
||||
import com.chwl.core.relation.cp.bean.CpInviteInfo;
|
||||
import com.chwl.core.upgrade.event.ImPushUpdateAppEvent;
|
||||
import com.chwl.core.user.UserModel;
|
||||
import com.chwl.core.utils.SharedPreferenceUtils;
|
||||
import com.chwl.core.vip.VipUpgradeEvent;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* 全局处理,比如App弹窗
|
||||
* create by lvzebiao @2019/8/14
|
||||
*/
|
||||
public class GlobalHandleManager {
|
||||
|
||||
private GlobalHandleManager() {
|
||||
|
||||
}
|
||||
|
||||
public static GlobalHandleManager get() {
|
||||
return Helper.INSTANCE;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
public void unInit() {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
public Activity getActivity() {
|
||||
return App.gStack.getTopActivity();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onImPushUpdateAppEvent(ImPushUpdateAppEvent event) {
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onVipUpgradeEvent(VipUpgradeEvent vipUpgradeEvent) {
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) return;
|
||||
UserModel.get().onlyUpdateLoginUserInfoCache();
|
||||
VipUpgradeDialog.newInstance(vipUpgradeEvent.getVipInfo()).show(activity);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onCpInviteEvent(CpInviteInfo entity) {
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) return;
|
||||
CpGlobalDialog.newInstance(entity, activity).openDialog();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onNewUserChargeEvent(NewUserChargeEvent event) {
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) return;
|
||||
new NewUserChargePrizeDialog(activity, event.getChargeProdTitle(), event.getFirstChargeRewardList()).openDialog();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReceiveRecallStatus(CheckLostUserEvent event) {
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) return;
|
||||
//如果没有获取到当前登录用户的信息,不弹出提示
|
||||
if (UserModel.get().getCacheLoginUserInfo() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
CheckLostUserInfo checkLostUserInfo = (CheckLostUserInfo) event.getData();
|
||||
|
||||
boolean goBackOnce = (boolean) SharedPreferenceUtils.get(RecallDialog.GO_BACK_ONCE, false);
|
||||
|
||||
if (!goBackOnce && !event.isFailed() && checkLostUserInfo.isLostUser() && !checkLostUserInfo.isClaimedAward())
|
||||
RecallDialog.start(activity);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReceiveLevelUpActivity(LevelUpEvent event) {
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) return;
|
||||
if (AvRoomDataManager.get().isSelfGamePlaying()) return;
|
||||
// LevelUpDialog.start(activity, event.getLevelName(), true);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReceiveCharmLevelUpActivity(CharmLevelUpEvent event) {
|
||||
Activity activity = getActivity();
|
||||
if (activity == null) return;
|
||||
if (AvRoomDataManager.get().isSelfGamePlaying()) return;
|
||||
// LevelUpDialog.start(activity, event.getLevelName(), false);
|
||||
}
|
||||
|
||||
private static final class Helper {
|
||||
private static final GlobalHandleManager INSTANCE = new GlobalHandleManager();
|
||||
}
|
||||
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.application;
|
||||
package com.chwl.app.application;
|
||||
|
||||
/**
|
||||
* Created by wushaocheng on 2022/11/10.
|
||||
@@ -32,9 +32,9 @@ public interface IReportConstants {
|
||||
int FIFTEEN = 15;
|
||||
|
||||
String ACTIVATE_FIRST = "activate_first";
|
||||
String PEKO_ACTIVATE = "peko_activate";
|
||||
String MOLISTAR_ACTIVATE = "molistar_activate";
|
||||
String AGREEMENT_SHOW = "agreement_show";
|
||||
String PEKO_LOGIN = "peko_login";
|
||||
String MOLISTAR_LOGIN = "molistar_login";
|
||||
String AGREEMENT_CLICK = "agreement_click";
|
||||
String CLICK_TYPE = "click_type";
|
||||
String PAGE = "page";
|
||||
@@ -47,7 +47,7 @@ public interface IReportConstants {
|
||||
String FAIL_DETAIL = "fail_detail";
|
||||
String MODULE_HOMEPAGE_CLICK = "module_homepage_click";
|
||||
String HOMEPAGE_TYPE = "homepage_type";
|
||||
String PEKO_HOMEPAGE = "peko_homepage";
|
||||
String MOLISTAR_HOMEPAGE = "molistar_homepage";
|
||||
String TAB_HOMEPAGE_CLICK = "tab_homepage_click";
|
||||
String HOMEPAGE_TAB = "homepage_tab";
|
||||
String PAYPAGE_SHOW = "paypage_show";
|
||||
@@ -55,6 +55,6 @@ public interface IReportConstants {
|
||||
String ACCOUNT_BALANCE = "account_balance";
|
||||
String PAY_CLICK = "pay_click";
|
||||
String MONEY = "money";
|
||||
String PEKO_PAY = "peko_pay";
|
||||
String MOLISTAR_PAY = "molistar_pay";
|
||||
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.application;
|
||||
package com.chwl.app.application;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
@@ -0,0 +1,63 @@
|
||||
package com.chwl.app.application;
|
||||
|
||||
import android.os.Bundle;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 统一埋点事件
|
||||
* create by lvzebiao @2019/8/14
|
||||
*/
|
||||
public class ReportManager implements IReportService {
|
||||
|
||||
private static final String TAG = "ReportManager";
|
||||
|
||||
private ReportManager() {
|
||||
}
|
||||
|
||||
private static final class Helper {
|
||||
private static final ReportManager INSTANCE = new ReportManager();
|
||||
}
|
||||
|
||||
public static ReportManager get() {
|
||||
return Helper.INSTANCE;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置FirebaseAnalytics公共属性
|
||||
*
|
||||
* @param bundle 公共属性
|
||||
*/
|
||||
@Override
|
||||
public void setFirebaseAnalyticsDefaultEventParameters(Bundle bundle) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 埋点,不需要上报网络质量和事件耗时
|
||||
*
|
||||
* @param eventId 事件名称
|
||||
*/
|
||||
@Override
|
||||
public void reportEvent(String eventId) {
|
||||
reportEvent(eventId, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @param eventId 事件名称
|
||||
* @param map 事件参数和值
|
||||
*/
|
||||
@Override
|
||||
public void reportEvent(String eventId, Map<String, Object> map) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportAdjustEvent(String eventId) {
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio;
|
||||
package com.chwl.app.audio;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
@@ -12,20 +12,20 @@ import com.netease.nimlib.sdk.media.player.OnPlayListener;
|
||||
import com.netease.nimlib.sdk.media.record.AudioRecorder;
|
||||
import com.netease.nimlib.sdk.media.record.IAudioRecordCallback;
|
||||
import com.netease.nimlib.sdk.media.record.RecordType;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.base.BaseViewBindingActivity;
|
||||
import com.yizhuan.habu.common.widget.dialog.DialogManager;
|
||||
import com.yizhuan.habu.databinding.ActivityAudiorecordBinding;
|
||||
import com.yizhuan.xchat_android_core.audio.AudioPlayAndRecordManager;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_core.file.FileModel;
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
|
||||
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
|
||||
import com.yizhuan.xchat_android_core.user.UserModel;
|
||||
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.log.MLog;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.base.BaseViewBindingActivity;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.app.databinding.ActivityAudiorecordBinding;
|
||||
import com.chwl.core.audio.AudioPlayAndRecordManager;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.file.FileModel;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.room.bean.RoomInfo;
|
||||
import com.chwl.core.room.model.AvRoomModel;
|
||||
import com.chwl.core.user.UserModel;
|
||||
import com.chwl.core.user.bean.UserInfo;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.log.MLog;
|
||||
|
||||
import java.io.File;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio;
|
||||
package com.chwl.app.audio;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
@@ -10,21 +10,21 @@ import android.view.View;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.UIHelper;
|
||||
import com.yizhuan.habu.audio.adapter.MyVoiceListAdapter;
|
||||
import com.yizhuan.habu.audio.helper.AudioPlayerHelper;
|
||||
import com.yizhuan.habu.audio.presenter.MyVoicePresenter;
|
||||
import com.yizhuan.habu.audio.view.IMyVoiceView;
|
||||
import com.yizhuan.habu.base.BaseMvpActivity;
|
||||
import com.yizhuan.habu.common.NoDataFragment;
|
||||
import com.yizhuan.habu.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.yizhuan.habu.ui.widget.recyclerview.decoration.HorizontalDecoration;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.UserVoiceInfo;
|
||||
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.log.MLog;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.UIHelper;
|
||||
import com.chwl.app.audio.adapter.MyVoiceListAdapter;
|
||||
import com.chwl.app.audio.helper.AudioPlayerHelper;
|
||||
import com.chwl.app.audio.presenter.MyVoicePresenter;
|
||||
import com.chwl.app.audio.view.IMyVoiceView;
|
||||
import com.chwl.app.base.BaseMvpActivity;
|
||||
import com.chwl.app.common.NoDataFragment;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.app.ui.widget.recyclerview.decoration.HorizontalDecoration;
|
||||
import com.chwl.core.audio.bean.UserVoiceInfo;
|
||||
import com.chwl.library.base.factory.CreatePresenter;
|
||||
import com.chwl.library.utils.ListUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.log.MLog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -98,7 +98,7 @@ public class MyVoiceActivity extends BaseMvpActivity<IMyVoiceView, MyVoicePresen
|
||||
private void playVoice(String voice) {
|
||||
// AudioEngineManager.get().setOpenVoiceMatchActivity(true);
|
||||
// PlayerModel.get().pause();
|
||||
AudioPlayerHelper.get().playInThread(voice, new com.yizhuan.habu.audio.helper.OnPlayListener() {
|
||||
AudioPlayerHelper.get().playInThread(voice, new com.chwl.app.audio.helper.OnPlayListener() {
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
if (adapter != null) {
|
@@ -1,8 +1,8 @@
|
||||
package com.yizhuan.habu.audio;
|
||||
package com.chwl.app.audio;
|
||||
|
||||
import static com.yizhuan.habu.audio.presenter.RecordingVoicePresenter.STATE_RECORD_NORMAL;
|
||||
import static com.yizhuan.habu.audio.presenter.RecordingVoicePresenter.STATE_RECORD_RECORDING;
|
||||
import static com.yizhuan.habu.audio.presenter.RecordingVoicePresenter.STATE_RECORD_SUCCESS;
|
||||
import static com.chwl.app.audio.presenter.RecordingVoicePresenter.STATE_RECORD_NORMAL;
|
||||
import static com.chwl.app.audio.presenter.RecordingVoicePresenter.STATE_RECORD_RECORDING;
|
||||
import static com.chwl.app.audio.presenter.RecordingVoicePresenter.STATE_RECORD_SUCCESS;
|
||||
|
||||
import android.Manifest;
|
||||
import android.animation.Animator;
|
||||
@@ -28,24 +28,24 @@ import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.audio.adapter.CardAdapter;
|
||||
import com.yizhuan.habu.audio.helper.AudioPlayerHelper;
|
||||
import com.yizhuan.habu.audio.presenter.RecordingVoicePresenter;
|
||||
import com.yizhuan.habu.audio.view.IRecordingVoiceView;
|
||||
import com.yizhuan.habu.audio.widget.OnSwipeListener;
|
||||
import com.yizhuan.habu.audio.widget.RingProgressView;
|
||||
import com.yizhuan.habu.audio.widget.VoiceCardConfig;
|
||||
import com.yizhuan.habu.audio.widget.VoiceCardItemTouchHelperCallback;
|
||||
import com.yizhuan.habu.audio.widget.VoiceCardLayoutManager;
|
||||
import com.yizhuan.habu.audio.widget.VoiceCardRecyclerView;
|
||||
import com.yizhuan.habu.audio.widget.VoiceWave;
|
||||
import com.yizhuan.habu.base.BaseMvpActivity;
|
||||
import com.yizhuan.habu.common.widget.dialog.DialogManager;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceCardInfo;
|
||||
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
|
||||
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.audio.adapter.CardAdapter;
|
||||
import com.chwl.app.audio.helper.AudioPlayerHelper;
|
||||
import com.chwl.app.audio.presenter.RecordingVoicePresenter;
|
||||
import com.chwl.app.audio.view.IRecordingVoiceView;
|
||||
import com.chwl.app.audio.widget.OnSwipeListener;
|
||||
import com.chwl.app.audio.widget.RingProgressView;
|
||||
import com.chwl.app.audio.widget.VoiceCardConfig;
|
||||
import com.chwl.app.audio.widget.VoiceCardItemTouchHelperCallback;
|
||||
import com.chwl.app.audio.widget.VoiceCardLayoutManager;
|
||||
import com.chwl.app.audio.widget.VoiceCardRecyclerView;
|
||||
import com.chwl.app.audio.widget.VoiceWave;
|
||||
import com.chwl.app.base.BaseMvpActivity;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.core.audio.bean.VoiceCardInfo;
|
||||
import com.chwl.core.room.model.AvRoomModel;
|
||||
import com.chwl.library.base.factory.CreatePresenter;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio
|
||||
package com.chwl.app.audio
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
@@ -17,17 +17,17 @@ import com.opensource.svgaplayer.SVGADrawable
|
||||
import com.opensource.svgaplayer.SVGAImageView
|
||||
import com.opensource.svgaplayer.SVGAParser
|
||||
import com.opensource.svgaplayer.SVGAVideoEntity
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.audio.helper.AudioPlayerHelper
|
||||
import com.yizhuan.habu.audio.viewmodel.SoundViewModel
|
||||
import com.yizhuan.habu.base.BaseViewBindingActivity
|
||||
import com.yizhuan.habu.databinding.ActivitySoundSignatureBinding
|
||||
import com.yizhuan.habu.ui.widget.dialog.CommonDialog
|
||||
import com.yizhuan.xchat_android_core.file.FileModel
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
|
||||
import com.yizhuan.xchat_android_core.user.bean.UserInfo.SoundBean
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.audio.helper.AudioPlayerHelper
|
||||
import com.chwl.app.audio.viewmodel.SoundViewModel
|
||||
import com.chwl.app.base.BaseViewBindingActivity
|
||||
import com.chwl.app.databinding.ActivitySoundSignatureBinding
|
||||
import com.chwl.app.ui.widget.dialog.CommonDialog
|
||||
import com.chwl.core.file.FileModel
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.user.bean.UserInfo.SoundBean
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import com.chwl.library.utils.SingleToastUtil
|
||||
import io.reactivex.SingleObserver
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.util.*
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio;
|
||||
package com.chwl.app.audio;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -14,36 +14,36 @@ import android.widget.TextView;
|
||||
|
||||
import com.opensource.svgaplayer.SVGACallback;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.UIHelper;
|
||||
import com.yizhuan.habu.audio.helper.AudioPlayerHelper;
|
||||
import com.yizhuan.habu.audio.helper.OnPlayListener;
|
||||
import com.yizhuan.habu.audio.helper.OnRefreshListener;
|
||||
import com.yizhuan.habu.audio.helper.SvgaCacheManager;
|
||||
import com.yizhuan.habu.audio.helper.VmSoundManager;
|
||||
import com.yizhuan.habu.audio.helper.VoiceMacthHelper;
|
||||
import com.yizhuan.habu.audio.view.IBottleOpListener;
|
||||
import com.yizhuan.habu.audio.widget.VoiceBottleFilterGenderBottomDialog;
|
||||
import com.yizhuan.habu.audio.widget.VoiceLine;
|
||||
import com.yizhuan.habu.base.BaseViewBindingActivity;
|
||||
import com.yizhuan.habu.base.TitleBar;
|
||||
import com.yizhuan.habu.common.widget.dialog.DialogManager;
|
||||
import com.yizhuan.habu.databinding.ActivityVoiceMatchBinding;
|
||||
import com.yizhuan.habu.ui.im.avtivity.NimP2PMessageActivity;
|
||||
import com.yizhuan.habu.ui.widget.higuide.TuTuGuideHelper;
|
||||
import com.yizhuan.xchat_android_core.audio.AudioModel;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.HistoryVoiceInfo;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceMatchInfo;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_core.music.model.PlayerModel;
|
||||
import com.yizhuan.xchat_android_core.user.UserModel;
|
||||
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
|
||||
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
|
||||
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.UIHelper;
|
||||
import com.chwl.app.audio.helper.AudioPlayerHelper;
|
||||
import com.chwl.app.audio.helper.OnPlayListener;
|
||||
import com.chwl.app.audio.helper.OnRefreshListener;
|
||||
import com.chwl.app.audio.helper.SvgaCacheManager;
|
||||
import com.chwl.app.audio.helper.VmSoundManager;
|
||||
import com.chwl.app.audio.helper.VoiceMacthHelper;
|
||||
import com.chwl.app.audio.view.IBottleOpListener;
|
||||
import com.chwl.app.audio.widget.VoiceBottleFilterGenderBottomDialog;
|
||||
import com.chwl.app.audio.widget.VoiceLine;
|
||||
import com.chwl.app.base.BaseViewBindingActivity;
|
||||
import com.chwl.app.base.TitleBar;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.app.databinding.ActivityVoiceMatchBinding;
|
||||
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
|
||||
import com.chwl.app.ui.widget.higuide.TuTuGuideHelper;
|
||||
import com.chwl.core.audio.AudioModel;
|
||||
import com.chwl.core.audio.bean.HistoryVoiceInfo;
|
||||
import com.chwl.core.audio.bean.VoiceMatchInfo;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.music.model.PlayerModel;
|
||||
import com.chwl.core.user.UserModel;
|
||||
import com.chwl.core.user.bean.UserInfo;
|
||||
import com.chwl.core.utils.ActivityUtil;
|
||||
import com.chwl.core.utils.SharedPreferenceUtils;
|
||||
import com.chwl.core.utils.net.DontWarnObserver;
|
||||
import com.chwl.library.utils.ListUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.adapter;
|
||||
package com.chwl.app.audio.adapter;
|
||||
|
||||
import android.text.method.ScrollingMovementMethod;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -11,8 +11,8 @@ import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceCardInfo;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.core.audio.bean.VoiceCardInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.adapter;
|
||||
package com.chwl.app.audio.adapter;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -10,11 +10,11 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.audio.widget.VoiceLine;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.UserVoiceInfo;
|
||||
import com.yizhuan.xchat_android_core.utils.StringUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.audio.widget.VoiceLine;
|
||||
import com.chwl.core.audio.bean.UserVoiceInfo;
|
||||
import com.chwl.core.utils.StringFormatUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
@@ -105,7 +105,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
|
||||
});
|
||||
// 点击播放声音/停止声音
|
||||
helper.voiceBarLayout.setOnClickListener(view -> {
|
||||
if (StringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
if (StringFormatUtils.isEmpty(item.getVoiceUrl())) {
|
||||
return;
|
||||
}
|
||||
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
|
||||
@@ -140,7 +140,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
|
||||
});
|
||||
// 点击播放声音/停止声音
|
||||
helper.voiceBarLayout.setOnClickListener(view -> {
|
||||
if (StringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
if (StringFormatUtils.isEmpty(item.getVoiceUrl())) {
|
||||
return;
|
||||
}
|
||||
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
|
||||
@@ -177,7 +177,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
|
||||
});
|
||||
// 点击播放声音/停止声音
|
||||
helper.voiceBarLayout.setOnClickListener(view -> {
|
||||
if (StringUtils.isEmpty(item.getVoiceUrl())) {
|
||||
if (StringFormatUtils.isEmpty(item.getVoiceUrl())) {
|
||||
return;
|
||||
}
|
||||
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.helper;
|
||||
package com.chwl.app.audio.helper;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.media.AudioManager;
|
||||
@@ -7,8 +7,8 @@ import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.helper;
|
||||
package com.chwl.app.audio.helper;
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/6/17
|
@@ -0,0 +1,10 @@
|
||||
package com.chwl.app.audio.helper;
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/6/11
|
||||
*/
|
||||
public interface OnRefreshListener {
|
||||
|
||||
void refresh();
|
||||
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.helper;
|
||||
package com.chwl.app.audio.helper;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.helper;
|
||||
package com.chwl.app.audio.helper;
|
||||
|
||||
|
||||
import lombok.Getter;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.helper;
|
||||
package com.chwl.app.audio.helper;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
@@ -0,0 +1,35 @@
|
||||
package com.chwl.app.audio.presenter;
|
||||
|
||||
import com.chwl.app.audio.view.IMyVoiceView;
|
||||
import com.chwl.app.base.BaseMvpPresenter;
|
||||
import com.chwl.core.audio.AudioModel;
|
||||
import com.chwl.core.audio.bean.UserVoiceInfo;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.utils.net.DontWarnObserver;
|
||||
import com.chwl.library.base.PresenterEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 我的声音页面
|
||||
*/
|
||||
public class MyVoicePresenter extends BaseMvpPresenter<IMyVoiceView> {
|
||||
|
||||
public void getUserVoiceInfo() {
|
||||
getMvpView().showLoadingView();
|
||||
AudioModel.get().getMyVoiceInfoList(AuthModel.get().getCurrentUid())
|
||||
.compose(bindUntilEvent(PresenterEvent.DESTROY))
|
||||
.subscribe(new DontWarnObserver<List<UserVoiceInfo>>() {
|
||||
@Override
|
||||
public void accept(List<UserVoiceInfo> userVoiceInfos, String error) {
|
||||
super.accept(userVoiceInfos, error);
|
||||
if (getMvpView() == null) {
|
||||
return;
|
||||
}
|
||||
getMvpView().hideLoadingView();
|
||||
getMvpView().showVoiceInfo(userVoiceInfos);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
@@ -1,8 +1,8 @@
|
||||
package com.yizhuan.habu.audio.presenter;
|
||||
package com.chwl.app.audio.presenter;
|
||||
|
||||
import static com.yizhuan.habu.audio.RecordingVoiceActivity.AUDIO_DURA;
|
||||
import static com.yizhuan.habu.audio.RecordingVoiceActivity.AUDIO_FILE;
|
||||
import static com.yizhuan.habu.audio.RecordingVoiceActivity.MIN_RECORD_VOICE_DURATION;
|
||||
import static com.chwl.app.audio.RecordingVoiceActivity.AUDIO_DURA;
|
||||
import static com.chwl.app.audio.RecordingVoiceActivity.AUDIO_FILE;
|
||||
import static com.chwl.app.audio.RecordingVoiceActivity.MIN_RECORD_VOICE_DURATION;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -13,25 +13,25 @@ import android.util.Log;
|
||||
import com.netease.nimlib.sdk.media.record.AudioRecorder;
|
||||
import com.netease.nimlib.sdk.media.record.IAudioRecordCallback;
|
||||
import com.netease.nimlib.sdk.media.record.RecordType;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.audio.helper.AudioPlayerHelper;
|
||||
import com.yizhuan.habu.audio.helper.OnPlayListener;
|
||||
import com.yizhuan.habu.audio.view.IRecordingVoiceView;
|
||||
import com.yizhuan.habu.base.BaseMvpPresenter;
|
||||
import com.yizhuan.xchat_android_core.audio.AudioModel;
|
||||
import com.yizhuan.xchat_android_core.audio.AudioPlayAndRecordManager;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.SaveVoiceSuccessResultInfo;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceCardInfo;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_core.file.FileModel;
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
|
||||
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
|
||||
import com.yizhuan.xchat_android_library.base.PresenterEvent;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.log.MLog;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.audio.helper.AudioPlayerHelper;
|
||||
import com.chwl.app.audio.helper.OnPlayListener;
|
||||
import com.chwl.app.audio.view.IRecordingVoiceView;
|
||||
import com.chwl.app.base.BaseMvpPresenter;
|
||||
import com.chwl.core.audio.AudioModel;
|
||||
import com.chwl.core.audio.AudioPlayAndRecordManager;
|
||||
import com.chwl.core.audio.bean.SaveVoiceSuccessResultInfo;
|
||||
import com.chwl.core.audio.bean.VoiceCardInfo;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.file.FileModel;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.room.bean.RoomInfo;
|
||||
import com.chwl.core.utils.net.DontWarnObserver;
|
||||
import com.chwl.library.base.PresenterEvent;
|
||||
import com.chwl.library.utils.ListUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
import com.chwl.library.utils.log.MLog;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.view;
|
||||
package com.chwl.app.audio.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
@@ -9,9 +9,9 @@ import android.widget.FrameLayout;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.yizhuan.habu.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceMatchInfo;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.core.audio.bean.VoiceMatchInfo;
|
||||
import com.chwl.library.utils.ListUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.view;
|
||||
package com.chwl.app.audio.view;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -14,27 +14,29 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.UIHelper;
|
||||
import com.yizhuan.habu.audio.VoiceMatchActivity;
|
||||
import com.yizhuan.habu.audio.helper.OnPlayListener;
|
||||
import com.yizhuan.habu.audio.helper.SvgaCacheManager;
|
||||
import com.yizhuan.habu.audio.helper.VmSoundManager;
|
||||
import com.yizhuan.habu.common.widget.CircleImageView;
|
||||
import com.yizhuan.habu.ui.utils.ImageLoadUtils;
|
||||
import com.yizhuan.habu.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.yizhuan.xchat_android_constants.XChatConstants;
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceMatchInfo;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
|
||||
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.TimeUtils;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.UIHelper;
|
||||
import com.chwl.app.audio.VoiceMatchActivity;
|
||||
import com.chwl.app.audio.helper.OnPlayListener;
|
||||
import com.chwl.app.audio.helper.SvgaCacheManager;
|
||||
import com.chwl.app.audio.helper.VmSoundManager;
|
||||
import com.chwl.app.common.widget.CircleImageView;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.core.XConstants;
|
||||
import com.chwl.core.audio.bean.VoiceMatchInfo;
|
||||
import com.chwl.core.auth.AuthModel;
|
||||
import com.chwl.core.utils.SharedPreferenceUtils;
|
||||
import com.chwl.core.utils.net.DontWarnObserver;
|
||||
import com.chwl.core.utils.net.RxHelper;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
import com.chwl.library.utils.TimeUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Single;
|
||||
@@ -428,7 +430,7 @@ public class BottleLayout extends FrameLayout {
|
||||
|
||||
ivReport.setOnClickListener(view -> {
|
||||
// 跳转到举报页面
|
||||
UIHelper.showReportPage(context, info.getUid(), XChatConstants.REPORT_TYPE_VOICE);
|
||||
UIHelper.showReportPage(context, info.getUid(), XConstants.REPORT_TYPE_VOICE);
|
||||
});
|
||||
|
||||
}
|
||||
@@ -519,6 +521,7 @@ public class BottleLayout extends FrameLayout {
|
||||
double num = likeCountDouble / 10000;
|
||||
|
||||
DecimalFormat decimalFormat = new DecimalFormat("0.00");// 构造方法的字符格式这里如果小数不足2位,会以0补足.
|
||||
decimalFormat.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ENGLISH));
|
||||
BigDecimal bigDecimal = new BigDecimal(num);
|
||||
double likeCountFormat = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
if (likeCountFormat > 9999) {
|
@@ -0,0 +1,14 @@
|
||||
package com.chwl.app.audio.view;
|
||||
|
||||
import com.chwl.core.audio.bean.VoiceMatchInfo;
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/6/19
|
||||
*/
|
||||
public interface IBottleOpListener {
|
||||
|
||||
void onLimit(boolean isRight);
|
||||
|
||||
void onLikeOrUnLike(VoiceMatchInfo info, boolean isRight, boolean needLoading);
|
||||
|
||||
}
|
23
app/src/main/java/com/chwl/app/audio/view/IMyVoiceView.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package com.chwl.app.audio.view;
|
||||
|
||||
import com.chwl.core.audio.bean.UserVoiceInfo;
|
||||
import com.chwl.library.base.IMvpBaseView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 我的声音页面
|
||||
*/
|
||||
public interface IMyVoiceView extends IMvpBaseView {
|
||||
/**
|
||||
* 显示声音数据消息
|
||||
*/
|
||||
void showVoiceInfo(List<UserVoiceInfo> voiceList);
|
||||
|
||||
/**
|
||||
* 请稍后
|
||||
*/
|
||||
void showLoadingView();
|
||||
|
||||
void hideLoadingView();
|
||||
}
|
@@ -1,9 +1,9 @@
|
||||
package com.yizhuan.habu.audio.view;
|
||||
package com.chwl.app.audio.view;
|
||||
|
||||
import android.content.Intent;
|
||||
|
||||
import com.yizhuan.xchat_android_core.audio.bean.VoiceCardInfo;
|
||||
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
|
||||
import com.chwl.core.audio.bean.VoiceCardInfo;
|
||||
import com.chwl.library.base.IMvpBaseView;
|
||||
|
||||
import java.util.List;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.view;
|
||||
package com.chwl.app.audio.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
@@ -8,8 +8,8 @@ import android.util.AttributeSet;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
|
||||
import lombok.Setter;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.viewmodel
|
||||
package com.chwl.app.audio.viewmodel
|
||||
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
@@ -6,22 +6,22 @@ import androidx.lifecycle.MutableLiveData
|
||||
import com.netease.nimlib.sdk.media.record.AudioRecorder
|
||||
import com.netease.nimlib.sdk.media.record.IAudioRecordCallback
|
||||
import com.netease.nimlib.sdk.media.record.RecordType
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.audio.SoundSignatureActivity
|
||||
import com.yizhuan.habu.audio.helper.AudioPlayerHelper
|
||||
import com.yizhuan.habu.audio.helper.OnPlayListener
|
||||
import com.yizhuan.habu.base.BaseViewModel
|
||||
import com.yizhuan.xchat_android_core.Constants
|
||||
import com.yizhuan.xchat_android_core.audio.AudioPlayAndRecordManager
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel
|
||||
import com.yizhuan.xchat_android_core.manager.AudioEngineManager
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
|
||||
import com.yizhuan.xchat_android_core.sound.model.SoundModel
|
||||
import com.yizhuan.xchat_android_core.utils.toast
|
||||
import com.yizhuan.xchat_android_library.common.application.BaseApp
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil
|
||||
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
|
||||
import com.yizhuan.xchat_android_library.utils.log.MLog
|
||||
import com.chwl.app.R
|
||||
import com.chwl.app.audio.SoundSignatureActivity
|
||||
import com.chwl.app.audio.helper.AudioPlayerHelper
|
||||
import com.chwl.app.audio.helper.OnPlayListener
|
||||
import com.chwl.app.base.BaseViewModel
|
||||
import com.chwl.core.Constants
|
||||
import com.chwl.core.audio.AudioPlayAndRecordManager
|
||||
import com.chwl.core.auth.AuthModel
|
||||
import com.chwl.core.manager.AudioEngineManager
|
||||
import com.chwl.core.manager.AvRoomDataManager
|
||||
import com.chwl.core.sound.model.SoundModel
|
||||
import com.chwl.core.utils.extension.toast
|
||||
import com.chwl.library.common.application.BaseApp
|
||||
import com.chwl.library.utils.ResUtil
|
||||
import com.chwl.library.utils.SingleToastUtil
|
||||
import com.chwl.library.utils.log.MLog
|
||||
import java.io.File
|
||||
|
||||
/**
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
@@ -11,7 +11,7 @@ import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.chwl.app.R;
|
||||
|
||||
/**
|
||||
* 录制声音页面的环形进度条
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
@@ -11,7 +11,7 @@ import android.graphics.SweepGradient;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.chwl.app.R;
|
||||
|
||||
public class RoundProgressView extends View {
|
||||
// 画实心圆的画笔
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
@@ -15,7 +15,7 @@ import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.chwl.app.R;
|
||||
|
||||
/**
|
||||
* 声音瓶子.筛选性别Dialog
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
/**
|
||||
* 录制声音页面.声音卡片滑动配置
|
@@ -1,4 +1,4 @@
|
||||
package com.yizhuan.habu.audio.widget;
|
||||
package com.chwl.app.audio.widget;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.util.Log;
|
||||
@@ -9,8 +9,8 @@ import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
/**
|
||||
* 录制声音页面.声音卡片滑动列表ItemTouchHelperCallback
|