Commit afee32f4f557f511a963273f21b7f17bf16f9e8d

Authored by YangShuai
2 parents c2868514 01dbf5c8

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	module_xiaojiaSoundBox/src/main/AndroidManifest.xml
.idea/codeStyles/Project.xml
1 1 <component name="ProjectCodeStyleConfiguration">
2 2 <code_scheme name="Project" version="173">
3   - <Objective-C-extensions>
4   - <file>
5   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
6   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
7   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
8   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
9   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
10   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
11   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
12   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
13   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
14   - </file>
15   - <class>
16   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
17   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
18   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
19   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
20   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
21   - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
22   - </class>
23   - <extensions>
24   - <pair source="cpp" header="h" fileNamingConvention="NONE" />
25   - <pair source="c" header="h" fileNamingConvention="NONE" />
26   - </extensions>
27   - </Objective-C-extensions>
28 3 <codeStyleSettings language="XML">
29 4 <arrangement>
30 5 <rules>
... ...
module_xiaojiaSoundBox/src/main/AndroidManifest.xml
... ... @@ -17,6 +17,8 @@
17 17 <uses-permission android:name="android.permission.INTERNET" />
18 18  
19 19 <application>
  20 + <activity android:name=".ui.activity.ShareFriendActivity"/>
  21 + <activity android:name=".ui.activity.InvitFriendActivity" />
20 22 <activity android:name=".ui.activity.DeviceInfoActivity"></activity>
21 23 <activity android:name=".ui.activity.InvitFriendActivity" />
22 24 <activity android:name=".ui.activity.UserManagerActivity" />
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/presenter/InvitFriendPresenter.java
... ... @@ -55,7 +55,7 @@ public class InvitFriendPresenter extends MvpBasePresenter&lt;InvitFriendView&gt; {
55 55 return;
56 56 }
57 57 getView().hideLoadingView();
58   - getView().initView(baseInfo.getData());
  58 + getView().setData(baseInfo.getData());
59 59 }
60 60 })
61 61 .setFailureCallback(new FailureCallback() {
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/InvitFriendView.java
... ... @@ -5,6 +5,7 @@ import android.graphics.Bitmap;
5 5 import android.graphics.BitmapFactory;
6 6 import android.net.Uri;
7 7 import android.support.v7.widget.LinearLayoutManager;
  8 +import android.text.TextUtils;
8 9 import android.view.View;
9 10  
10 11 import com.alibaba.android.arouter.launcher.ARouter;
... ... @@ -18,6 +19,7 @@ import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo;
18 19 import com.cnlive.strike.xiaojiaspeaker.model.XiaoJiaQrcode;
19 20 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean;
20 21 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean;
  22 +import com.cnlive.strike.xiaojiaspeaker.ui.activity.ShareFriendActivity;
21 23 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.SetRoleAdapter;
22 24 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.InvitFriendFragment;
23 25 import com.cnlive.strike.xiaojiaspeaker.ui.widget.EditRoleDialog;
... ... @@ -37,6 +39,7 @@ public class InvitFriendView implements MvpView {
37 39 private InvitFriendFragment fragment;
38 40 private List<RoleInfo> roleInfoList;
39 41 private SetRoleAdapter setRoleAdapter;
  42 + private String encryptionContent;
40 43  
41 44 public InvitFriendView(InvitFriendFragment fragment) {
42 45 this.fragment = fragment;
... ... @@ -46,7 +49,17 @@ public class InvitFriendView implements MvpView {
46 49 return fragment == null ? null : fragment.getActivity();
47 50 }
48 51  
49   - public void initView(RoleNetBean roleNetBean) {
  52 + public void initView(){
  53 + fragment.binding.btnShare.setOnClickListener(v -> {
  54 + if(!TextUtils.isEmpty(encryptionContent)){
  55 + ShareFriendActivity.startActivity(fragment.getActivity(),"","",encryptionContent);
  56 + }else {
  57 + //提示跳转失败原因
  58 + }
  59 + });
  60 + }
  61 +
  62 + public void setData(RoleNetBean roleNetBean) {
50 63 roleInfoList = new ArrayList<>();
51 64 //整理数据
52 65 //获取选中的联系人
... ... @@ -103,7 +116,7 @@ public class InvitFriendView implements MvpView {
103 116 jsonObject.put("type", XiaoJiaConst.QRCODE_TYPE);
104 117  
105 118 String qrContent = jsonObject.toString();
106   - String encryptionContent = SimpleDES.ebotongEncrypto(qrContent, "cnliveIm");
  119 + encryptionContent = SimpleDES.ebotongEncrypto(qrContent, "cnliveIm");
107 120 encryptionContent = encryptionContent.replaceAll("\\\n", "");
108 121 QrService service = (QrService) ARouter.getInstance().navigation(QrService.class);
109 122 if (null == service) {
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/ShareFriendActivity.java 0 → 100644
  1 + package com.cnlive.strike.xiaojiaspeaker.ui.activity;
  2 +
  3 +import android.Manifest;
  4 +import android.content.Context;
  5 +import android.content.Intent;
  6 +import android.content.SharedPreferences;
  7 +import android.graphics.Bitmap;
  8 +import android.support.v4.content.ContextCompat;
  9 +import android.support.v7.app.AppCompatActivity;
  10 +import android.os.Bundle;
  11 +import android.util.Base64;
  12 +import android.view.View;
  13 +import android.widget.ImageView;
  14 +import android.widget.RelativeLayout;
  15 +import android.widget.TextView;
  16 +
  17 +import com.alibaba.android.arouter.launcher.ARouter;
  18 +import com.cnlive.libs.base.arouter.QrService;
  19 +import com.cnlive.libs.base.util.SimpleDES;
  20 +import com.cnlive.libs.base.util.StatusBarUtil;
  21 +import com.cnlive.libs.base.util.StatusBarUtil2;
  22 +import com.cnlive.strike.application.GlideApp;
  23 +import com.cnlive.strike.xiaojiaspeaker.R;
  24 +import com.cnlive.strike.xiaojiaspeaker.util.DensityUtil;
  25 +import com.cnlive.strike.xiaojiaspeaker.util.lib_permisshelper.PermissionsListener;
  26 +import com.cnlive.strike.xiaojiaspeaker.util.lib_permisshelper.PermissionsUtils;
  27 +import com.qmuiteam.qmui.util.QMUIDrawableHelper;
  28 +import com.qmuiteam.qmui.widget.QMUITopBar;
  29 +
  30 +import org.json.JSONObject;
  31 +
  32 +import java.io.ByteArrayOutputStream;
  33 +
  34 + public class ShareFriendActivity extends AppCompatActivity {
  35 +
  36 + private QMUITopBar topBar;
  37 + private String iconUrl;
  38 + private String name,encryptionContent;
  39 + private RelativeLayout share_ry;
  40 + private ImageView img_icon,erweima;
  41 + private TextView nametx;
  42 + private PermissionsUtils mPermissionsUtils = new PermissionsUtils();
  43 +
  44 + public static void startActivity(Context context,String iconUrl,String name,String erWeiMaContent){
  45 + Intent intent = new Intent(context,ShareFriendActivity.class);
  46 + intent.putExtra("iconUrl",iconUrl);
  47 + intent.putExtra("name",name);
  48 + intent.putExtra("erWeiMaContent",erWeiMaContent);
  49 + context.startActivity(intent);
  50 + }
  51 +
  52 + @Override
  53 + protected void onCreate(Bundle savedInstanceState) {
  54 + super.onCreate(savedInstanceState);
  55 + setContentView(R.layout.activity_share_friend);
  56 + StatusBarUtil.setStatusBarWrite(this);
  57 + StatusBarUtil2.setColor(this, ContextCompat.getColor(this, R.color.white), 0);
  58 +
  59 + initView();
  60 + initData(getIntent());
  61 + }
  62 +
  63 + private void initView(){
  64 + topBar = findViewById(R.id.topbar);
  65 + share_ry = findViewById(R.id.share_ry);
  66 + img_icon = findViewById(R.id.img_icon);
  67 + nametx = findViewById(R.id.name);
  68 + erweima = findViewById(R.id.erweima);
  69 +
  70 + findViewById(R.id.share_btn).setOnClickListener(v -> getPermissionsWithTip());
  71 +
  72 + topBar.setTitle("");
  73 + //设置返回按钮
  74 + topBar.addLeftImageButton(R.drawable.icon_back, R.id.left_back).setOnClickListener(new View.OnClickListener() {
  75 + @Override
  76 + public void onClick(View view) {
  77 + finish();
  78 + }
  79 + });
  80 + }
  81 +
  82 + private void initData(Intent intent){
  83 + iconUrl = intent.getStringExtra("iconUrl");
  84 + name = intent.getStringExtra("name");
  85 +
  86 + GlideApp.with(this).load(iconUrl).into(img_icon);
  87 + nametx.setText(name);
  88 +
  89 + encryptionContent = intent.getStringExtra("erWeiMaContent");
  90 +
  91 + QrService service = (QrService) ARouter.getInstance().navigation(QrService.class);
  92 + if (null == service) {
  93 + return;
  94 + }
  95 + Bitmap bitmap = service.createQRNoIconBitmap(encryptionContent, DensityUtil.dp2px(this, 245));
  96 +// binding.ivQr.setBackgroundDrawable(bitmap);
  97 + if (null != bitmap) {
  98 + GlideApp.with(this).load(bitmap).into(erweima);
  99 + }
  100 + }
  101 +
  102 +
  103 + private void getPermissionsWithTip() {
  104 + mPermissionsUtils
  105 + .setPermissionsListener(new PermissionsListener() {
  106 + @Override
  107 + public void onDenied(String[] deniedPermissions) {
  108 + getPermissionsWithTip();
  109 + }
  110 +
  111 + @Override
  112 + public void onGranted() {
  113 + share();
  114 + }
  115 + })
  116 + .withActivity(this)
  117 + .getPermissions(this
  118 + , 100
  119 + , Manifest.permission.WRITE_EXTERNAL_STORAGE
  120 + , Manifest.permission.READ_EXTERNAL_STORAGE
  121 + );
  122 + }
  123 +
  124 + private void share() {
  125 + Bitmap qrbm = QMUIDrawableHelper.createBitmapFromView(share_ry);
  126 + String Base64 = convertIconToString(qrbm);
  127 + SharedPreferences.Editor editor = getSharedPreferences("sp", Context.MODE_PRIVATE).edit();
  128 + editor.putString("share_img_string", Base64);
  129 + editor.commit();
  130 + ARouter.getInstance().build("/share/ShareImgActivity")
  131 + .withString("bitmap", "share_img_string")
  132 + .withString("fileName",null)
  133 + .navigation(this);
  134 + }
  135 +
  136 +
  137 + /**
  138 + * 图片转成string
  139 + *
  140 + * @param bitmap
  141 + * @return
  142 + */
  143 + public String convertIconToString(Bitmap bitmap) {
  144 + ByteArrayOutputStream baos = new ByteArrayOutputStream();// outputstream
  145 + bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
  146 + byte[] appicon = baos.toByteArray();// 转为byte数组
  147 + String img = Base64.encodeToString(appicon, Base64.DEFAULT);
  148 + return img;
  149 + }
  150 +
  151 +}
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/InvitFriendFragment.java
... ... @@ -32,6 +32,7 @@ public class InvitFriendFragment extends MvpBindingFragment&lt;InvitFriendView, Inv
32 32 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
33 33 super.onViewCreated(view, savedInstanceState);
34 34 initTopBar();
  35 + if(getMvpView() != null) getMvpView().initView();
35 36 getPresenter().getSetRoleList(getActivity(), XiaoJIaCommInfo.getUserId(getActivity()), XiaoJIaCommInfo.getFamilyId(getActivity()));
36 37 }
37 38  
... ...
module_xiaojiaSoundBox/src/main/res/drawable-hdpi/family_bg.png 0 → 100644

150 KB

module_xiaojiaSoundBox/src/main/res/drawable-xhdpi/family_bg.png 0 → 100644

231 KB

module_xiaojiaSoundBox/src/main/res/drawable-xxhdpi/family_bg.png 0 → 100644

496 KB

module_xiaojiaSoundBox/src/main/res/layout/activity_share_friend.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + android:orientation="vertical"
  8 + tools:context=".ui.activity.ShareFriendActivity">
  9 +
  10 +
  11 + <com.qmuiteam.qmui.widget.QMUITopBar
  12 + android:id="@+id/topbar"
  13 + android:layout_width="match_parent"
  14 + android:layout_height="?attr/qmui_topbar_height"/>
  15 +
  16 + <RelativeLayout
  17 + android:id="@+id/share_ry"
  18 + android:layout_width="match_parent"
  19 + android:layout_height="match_parent"
  20 + android:layout_below="@id/topbar"
  21 + android:layout_marginTop="20dp"
  22 + android:layout_marginLeft="20dp"
  23 + android:layout_marginRight="20dp"
  24 + android:layout_marginBottom="60dp"
  25 + android:background="@drawable/family_bg">
  26 +
  27 + <LinearLayout
  28 + android:layout_width="wrap_content"
  29 + android:layout_height="wrap_content"
  30 + android:layout_centerHorizontal="true"
  31 + android:layout_margin="20dp"
  32 + android:orientation="vertical">
  33 + <LinearLayout
  34 + android:layout_width="wrap_content"
  35 + android:layout_height="37dp"
  36 + android:layout_gravity="center_horizontal"
  37 + android:orientation="horizontal">
  38 + <ImageView
  39 + android:id="@+id/img_icon"
  40 + android:layout_width="37dp"
  41 + android:layout_height="37dp"
  42 + android:src="@drawable/icon_friend"/>
  43 +
  44 + <TextView
  45 + android:id="@+id/name"
  46 + android:layout_width="wrap_content"
  47 + android:layout_height="wrap_content"
  48 + android:textColor="@color/color_282828"
  49 + android:textSize="16sp"
  50 + android:layout_marginLeft="10dp"
  51 + android:layout_gravity="center_vertical"
  52 + android:text="轻轻的路过"
  53 + />
  54 +
  55 + <TextView
  56 + android:layout_width="wrap_content"
  57 + android:layout_height="wrap_content"
  58 + android:layout_gravity="center_vertical"
  59 + android:layout_marginLeft="10dp"
  60 + android:text="@string/invite_you"
  61 + android:textColor="@color/color_fff"
  62 + android:textSize="15sp"
  63 + />
  64 + </LinearLayout>
  65 + <TextView
  66 + android:layout_width="wrap_content"
  67 + android:layout_height="wrap_content"
  68 + android:text="@string/scanto_get_invite"
  69 + android:layout_marginTop="15dp"
  70 + android:textSize="15sp"
  71 + android:textColor="@color/color_fff"
  72 + />
  73 +
  74 + <ImageView
  75 + android:id="@+id/erweima"
  76 + android:layout_width="150dp"
  77 + android:layout_height="150dp"
  78 + android:layout_marginTop="15dp"
  79 + android:layout_gravity="center_horizontal"/>
  80 +
  81 + <LinearLayout
  82 + android:layout_width="match_parent"
  83 + android:layout_height="wrap_content"
  84 + android:layout_marginTop="15dp"
  85 + android:gravity="center">
  86 +
  87 + <TextView
  88 + android:layout_width="15dp"
  89 + android:layout_height="15dp"
  90 + android:background="@drawable/shape_green_circle"
  91 + android:gravity="center"
  92 + android:text="1"
  93 + android:textColor="@color/white"
  94 + android:textSize="11sp"
  95 + android:textStyle="bold" />
  96 +
  97 + <TextView
  98 + android:layout_width="wrap_content"
  99 + android:layout_height="wrap_content"
  100 + android:layout_marginLeft="5dp"
  101 + android:layout_marginRight="5dp"
  102 + android:text="下载网家家 >"
  103 + android:textColor="@color/color_282828"
  104 + android:textSize="12sp"
  105 + android:textStyle="bold" />
  106 +
  107 + <TextView
  108 + android:layout_width="15dp"
  109 + android:layout_height="15dp"
  110 + android:background="@drawable/shape_green_circle"
  111 + android:gravity="center"
  112 + android:text="2"
  113 + android:textColor="@color/white"
  114 + android:textSize="11sp"
  115 + android:textStyle="bold" />
  116 +
  117 + <TextView
  118 + android:layout_width="wrap_content"
  119 + android:layout_height="wrap_content"
  120 + android:layout_marginLeft="5dp"
  121 + android:layout_marginRight="5dp"
  122 + android:text="注册/登录 >"
  123 + android:textColor="@color/color_282828"
  124 + android:textSize="12sp"
  125 + android:textStyle="bold" />
  126 +
  127 + <TextView
  128 + android:layout_width="15dp"
  129 + android:layout_height="15dp"
  130 + android:background="@drawable/shape_green_circle"
  131 + android:gravity="center"
  132 + android:text="3"
  133 + android:textColor="@color/white"
  134 + android:textSize="11sp"
  135 + android:textStyle="bold" />
  136 +
  137 + </LinearLayout>
  138 +
  139 + <TextView
  140 + android:layout_width="wrap_content"
  141 + android:layout_height="wrap_content"
  142 + android:text="@string/haseapp_login"
  143 + android:layout_gravity="center_horizontal"
  144 + android:layout_marginTop="15dp"
  145 + android:textSize="15sp"
  146 + android:textColor="@color/color_282828"
  147 + android:textStyle="bold"
  148 + />
  149 + </LinearLayout>
  150 +
  151 + <TextView
  152 + android:layout_width="wrap_content"
  153 + android:layout_height="wrap_content"
  154 + android:layout_centerHorizontal="true"
  155 + android:layout_alignParentBottom="true"
  156 + android:layout_marginBottom="5dp"
  157 + android:text="@string/save_bitmap_app_scan"
  158 + android:textColor="@color/color_282828"
  159 + android:textSize="15sp"
  160 + />
  161 + </RelativeLayout>
  162 + <TextView
  163 + android:id="@+id/share_btn"
  164 + android:layout_width="wrap_content"
  165 + android:layout_height="wrap_content"
  166 + android:layout_alignParentBottom="true"
  167 + android:layout_centerHorizontal="true"
  168 + android:layout_marginBottom="15dp"
  169 + android:text="@string/share_family"
  170 + android:background="@drawable/selector_btn_green"
  171 + android:textColor="@color/color_fff"
  172 + android:textSize="16sp"
  173 + android:paddingTop="5dp"
  174 + android:paddingBottom="5dp"
  175 + android:paddingLeft="15dp"
  176 + android:paddingRight="15dp"
  177 + />
  178 +</RelativeLayout>
0 179 \ No newline at end of file
... ...
module_xiaojiaSoundBox/src/main/res/values/strings.xml
... ... @@ -24,4 +24,9 @@
24 24 <string name="go_to_liaten_china">前往听见中国 >></string>
25 25 <string name="open_gps_tip">为确保功能正常使用,请开启GPS!</string>
26 26 <string name="retry">重试</string>
  27 + <string name="invite_you">邀请你</string>
  28 + <string name="scanto_get_invite">扫码和他(她)绑定亲情关系</string>
  29 + <string name="haseapp_login">已安装网家家,请直接登录扫码</string>
  30 + <string name="save_bitmap_app_scan">-保存图片用网家家扫码-</string>
  31 + <string name="share_family">分享给家人</string>
27 32 </resources>
... ...