package me.pjq.pushup.utils;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Environment;
import com.tencent.mm.sdk.openapi.*;
import net.sourceforge.simcpux.Constants;
import net.sourceforge.simcpux.SendToWXActivity;
import net.sourceforge.simcpux.Util;
/**
* Created by pjq on 12/21/13.
*/
public class WeChatUtils {
private static final int THUMB_SIZE = 150;
private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath();
private static final int TIMELINE_SUPPORTED_VERSION = 0x21020001;
private static WeChatUtils instance;
private IWXAPI api;
private WeChatUtils(Context context) {
api = WXAPIFactory.createWXAPI(context, Constants.APP_ID, false);
}
public static WeChatUtils getInstance(Context context) {
if (null == instance) {
instance = new WeChatUtils(context);
}
return instance;
}
public void register() {
api.registerApp(Constants.APP_ID);
}
public IWXAPI getIWXAPI() {
return api;
}
public void send(boolean sendToTimeline) {
SendMessageToWX.Req req = appendReq;
req.scene = sendToTimeline && isSupportTimeline() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
}
private SendMessageToWX.Req appendReq;
public SendMessageToWX.Req createAppendReq(Bitmap bitmap, String subject, String text, String path) {
Bitmap bmp = bitmap;
WXImageObject imgObj = new WXImageObject(bmp);
WXMediaMessage msg = new WXMediaMessage();
msg.title = subject;
msg.description = text;
msg.mediaObject = imgObj;
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = Util.bmpToByteArray(thumbBmp, true); // 设置缩略图
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("appdata");
req.message = msg;
req.message.title = subject;
req.message.description = text;
this.appendReq = req;
return req;
}
public SendMessageToWX.Req createAppendReq2(String subject, String text, String path) {
final WXAppExtendObject appdata = new WXAppExtendObject();
appdata.filePath = path;
appdata.extInfo = "this is ext info";
final WXMediaMessage msg = new WXMediaMessage();
msg.setThumbImage(Util.extractThumbNail(path, 150, 150, true));
msg.title = subject;
msg.description = text;
msg.mediaObject = appdata;
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("appdata");
req.message = msg;
this.appendReq = req;
return req;
}
public void share(boolean sendToTimeline) {
SendMessageToWX.Req req = appendReq;
req.scene = sendToTimeline && isSupportTimeline() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
}
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
public boolean isSupportTimeline() {
int wxSdkVersion = api.getWXAppSupportAPI();
if (wxSdkVersion >= TIMELINE_SUPPORTED_VERSION) {
return true;
// Toast.makeText(WXEntryActivity.this, "wxSdkVersion = " + Integer.toHexString(wxSdkVersion) + "\ntimeline supported", Toast.LENGTH_LONG).show();
} else {
return false;
// Toast.makeText(WXEntryActivity.this, "wxSdkVersion = " + Integer.toHexString(wxSdkVersion) + "\ntimeline not supported", Toast.LENGTH_LONG).show();
}
}
public void showDemo(Context context) {
Intent intent = new Intent();
intent.setClass(context, SendToWXActivity.class);
context.startActivity(intent);
}
}