package cn.bidaround.ytcore.yxapi; import im.yixin.sdk.api.IYXAPI; import im.yixin.sdk.api.SendMessageToYX; import im.yixin.sdk.api.YXAPIFactory; import im.yixin.sdk.api.YXImageMessageData; import im.yixin.sdk.api.YXMessage; import im.yixin.sdk.api.YXMusicMessageData; import im.yixin.sdk.api.YXTextMessageData; import im.yixin.sdk.api.YXVideoMessageData; import im.yixin.sdk.api.YXWebPageMessageData; import im.yixin.sdk.util.BitmapUtil; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import cn.bidaround.ytcore.YtCore; import cn.bidaround.ytcore.YtShareListener; import cn.bidaround.ytcore.data.ShareData; import cn.bidaround.ytcore.data.YtPlatform; // 没有判断是否分享到朋友圈 public class YixinShare { /** 待分享图片 */ private Bitmap bitmap; private IYXAPI api; private ShareData shareData; private Activity act; /** 是否分享到朋友圈 */ private boolean shareToFriends; public YixinShare(Activity activity, boolean shareToFriends, ShareData shareData, YtShareListener listener, String realUrl, String shortUrl, boolean isAppShare){ act = activity; this.shareData = shareData; this.shareToFriends = shareToFriends; if(!shareToFriends){ api = YXAPIFactory.createYXAPI(activity, YtPlatform.PLATFORM_YIXIN.getAppId()); }else{ api = YXAPIFactory.createYXAPI(activity, YtPlatform.PLATFORM_YIXINFRIENDS.getAppId()); } api.registerApp(); YXBaseActivity.listener = listener; YXBaseActivity.isShareApp = isAppShare; if(shareToFriends) YXBaseActivity.platform = YtPlatform.PLATFORM_YIXINFRIENDS; else YXBaseActivity.platform = YtPlatform.PLATFORM_YIXIN; } public void shareToYixin(){ if(shareData==null){ return; } YXMessage msg = new YXMessage(); // 分享图文 if (shareData.getShareType() == ShareData.SHARETYPE_IMAGEANDTEXT) { // 如果是本地图片 if (shareData.getImagePath() != null) { bitmap = BitmapFactory.decodeFile(shareData.getImagePath()); } YXWebPageMessageData data = new YXWebPageMessageData(); data.webPageUrl = shareData.getTargetUrl(); msg.messageData = data; msg.title = shareData.getTitle(); msg.description = shareData.getText(); msg.thumbData = BitmapUtil.bmpToByteArray(getBmpThum(bitmap), false); } // 分享图片,如果是网路图片,已先将图片下载下来了 else if(shareData.getShareType() == ShareData.SHARETYPE_IMAGE){ YXImageMessageData imgObj = new YXImageMessageData(); imgObj.imagePath = shareData.getImagePath(); msg.messageData = imgObj; bitmap = BitmapFactory.decodeFile(shareData.getImagePath()); if (shareData.getImagePath() != null) { bitmap = BitmapFactory.decodeFile(shareData.getImagePath()); } msg.thumbData = BitmapUtil.bmpToByteArray(getBmpThum(bitmap), true); } //分享文字 else if(shareData.getShareType() == ShareData.SHARETYPE_TEXT){ YXTextMessageData textObj = new YXTextMessageData(); textObj.text = shareData.getText(); msg.messageData = textObj; msg.description = shareData.getDescription(); } //分享音乐 else if(shareData.getShareType() == ShareData.SHARETYPE_MUSIC){ YXMusicMessageData music = new YXMusicMessageData(); music.musicUrl = shareData.getTargetUrl(); music.musicDataUrl = shareData.getMusicUrl(); msg.messageData = music; msg.title = shareData.getTitle(); msg.description = shareData.getDescription(); if (shareData.getImagePath() != null) { bitmap = BitmapFactory.decodeFile(shareData.getImagePath()); } msg.thumbData = BitmapUtil.bmpToByteArray(getBmpThum(bitmap), true); } //分享视频 else if(shareData.getShareType() == ShareData.SHARETYPE_VIDEO){ YXVideoMessageData video = new YXVideoMessageData(); video.videoUrl = shareData.getVideoUrl(); msg.messageData = video; msg.title = shareData.getTitle(); msg.description = shareData.getDescription(); if (shareData.getImagePath() != null) { bitmap = BitmapFactory.decodeFile(shareData.getImagePath()); } msg.thumbData = BitmapUtil.bmpToByteArray(getBmpThum(bitmap), true); } SendMessageToYX.Req req = new SendMessageToYX.Req(); req.transaction = buildTransaction("youtui"); req.message = msg; req.scene = shareToFriends ? SendMessageToYX.Req.YXSceneTimeline : SendMessageToYX.Req.YXSceneSession; api.sendRequest(req); } /** * 获取缩略图 bitmap为空时分享会没有响应,所以要设置一个默认图片让用户知道 * @param bitmap * @return */ private Bitmap getBmpThum(Bitmap bitmap){ Bitmap bmpThum = null; if (bitmap != null) { bmpThum = Bitmap.createScaledBitmap(bitmap, 150, 150 * bitmap.getHeight() / bitmap.getWidth(), true); bitmap.recycle(); } else { bmpThum = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(act.getResources(), YtCore.res.getIdentifier("yt_loadfail", "drawable", YtCore.packName)), 150, 150, true); } return bmpThum; } private String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } }