package com.umeng.community.example;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.Window;
import com.umeng.comm.core.CommunitySDK;
import com.umeng.comm.core.beans.CommConfig;
import com.umeng.comm.core.beans.CommUser;
import com.umeng.comm.core.beans.FeedItem;
import com.umeng.comm.core.beans.Topic;
import com.umeng.comm.core.impl.CommunityFactory;
import com.umeng.comm.core.listeners.Listeners.FetchListener;
import com.umeng.comm.core.login.LoginListener;
import com.umeng.comm.core.login.Loginable;
import com.umeng.comm.core.nets.responses.AlbumResponse;
import com.umeng.comm.core.nets.responses.FeedsResponse;
import com.umeng.comm.core.nets.responses.TopicResponse;
import com.umeng.comm.core.nets.responses.UsersResponse;
import com.umeng.comm.core.sdkmanager.ImageLoaderManager;
import com.umeng.comm.core.sdkmanager.LocationSDKManager;
import com.umeng.comm.core.sdkmanager.LoginSDKManager;
import com.umeng.comm.ui.fragments.CommunityMainFragment;
import com.umeng.comm.ui.location.DefaultLocationImpl;
import com.umeng.community.example.custom.CustomLoginImpl;
import com.umeng.community.example.custom.UILImageLoader;
import com.umeng.community.login.UMAuthService;
import com.umeng.community.login.UMLoginServiceFactory;
import com.umeng.community.share.UMShareServiceFactory;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.sso.QZoneSsoHandler;
import com.umeng.socialize.sso.UMQQSsoHandler;
import com.umeng.socialize.weixin.controller.UMWXHandler;
/**
* 该类是微社区Demo的主界面Activity类,演示了以Fragment的形式集成友盟微社区。友盟微社区的主页Fragment为
* {@link CommunityMainFragment},该类继承自v4包中的Fragment。 </p> 该类中还演示了注入自定义登录系统
* {@link #useCustomLogin()}、配置友盟Social实现的登录系统 {@link #useSocialLogin()}
* 以及一些常用接口的示例 {@link #someMethodsDemo()}
*/
public class MainActivity extends FragmentActivity {
CommunitySDK mCommSDK = null;
String topicId = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 1、初始化友盟微社区
mCommSDK = CommunityFactory.getCommSDK(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ==================== 注意 ===================
// 开发者如果想将友盟微社区作为ViewPager中的一个页面集成到应用中时,请将您的ViewPager替换为CommunityViewPager,
// 避免滑动时间冲突导致问题
// CommunityViewPager viewPager = (CommunityViewPager)
// findViewById(R.id.viewPager);
// // 设置ViewPager的Adapter
// viewPager.setAdapter(new
// FragmentTabAdapter(getSupportFragmentManager()));
// ===============================================
// 2、单纯Fragment使用方式
CommunityMainFragment fragment = new CommunityMainFragment();
fragment.setBackButtonVisibility(View.GONE);
// 3、将友盟微社区的首页Fragment添加到Activity中
getSupportFragmentManager().beginTransaction().add(R.id.container, fragment).commit();
// =================== 自定义设置部分 =================
// 在初始化CommunitySDK之前配置推送和登录等组件
useSocialLogin();
// 使用自定义的ImageLoader
// useMyImageLoader();
// 使用自定义的登录系统
// useCustomLogin();
initPlatforms(this);
// 设置地理位置SDK
LocationSDKManager.getInstance().addAndUse(new DefaultLocationImpl());
}
/**
* 初始化分享相关的平台
*
* @param activity
*/
private void initPlatforms(Activity activity) {
// 添加QQ
UMQQSsoHandler qqHandler = new UMQQSsoHandler(activity, "1104606393",
"X4BAsJAVKtkDQ1zQ");
qqHandler.addToSocialSDK();
// 添加QZone平台
QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(activity, "1104606393",
"X4BAsJAVKtkDQ1zQ");
qZoneSsoHandler.addToSocialSDK();
// 添加微信平台
UMWXHandler wechatHandler = new UMWXHandler(activity, "wx96110a1e3af63a39",
"c60e3d3ff109a5d17013df272df99199");
wechatHandler.addToSocialSDK();
// 添加微信朋友圈平台
UMWXHandler circleHandler = new UMWXHandler(activity, "wx96110a1e3af63a39",
"c60e3d3ff109a5d17013df272df99199");
circleHandler.setToCircle(true);
circleHandler.addToSocialSDK();
UMShareServiceFactory.getSocialService().getConfig()
.setPlatforms(SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.WEIXIN,
SHARE_MEDIA.QZONE, SHARE_MEDIA.QQ, SHARE_MEDIA.SINA);
UMShareServiceFactory.getSocialService().getConfig()
.setPlatformOrder(SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.WEIXIN,
SHARE_MEDIA.QZONE, SHARE_MEDIA.QQ, SHARE_MEDIA.SINA);
}
/**
* 自定义自己的登录系统
*/
protected void useSocialLogin() {
// 用户自定义的登录
UMAuthService mLogin = UMLoginServiceFactory.getLoginService("umeng_login_impl");
String appId = "1104606393";
String appKey = "X4BAsJAVKtkDQ1zQ";
// SSO 设置
// mLogin.getConfig().setSsoHandler(new SinaSsoHandler());
new UMQQSsoHandler(this, appId, appKey).addToSocialSDK();
String wxappId = "wx96110a1e3af63a39";
String wxappSecret = "c60e3d3ff109a5d17013df272df99199";
new UMWXHandler(getApplicationContext(), wxappId,
wxappSecret).addToSocialSDK();
// 将登录实现注入到sdk中,key为umeng_login
LoginSDKManager.getInstance().addAndUse(mLogin);
}
protected void useCustomLogin() {
// 管理器
LoginSDKManager.getInstance().addAndUse(new CustomLoginImpl());
}
/**
* 自定义自己的ImageLoader
*/
protected void useMyImageLoader() {
//
final String imageLoadKey = UILImageLoader.class.getSimpleName();
// 使用第三方ImageLoader库,添加到sdk manager中, 并且使用useThis来使用该加载器.
ImageLoaderManager manager = ImageLoaderManager.getInstance();
manager.addImpl(imageLoadKey, new UILImageLoader(this));
manager.useThis(imageLoadKey);
}
/**
* 一些常用的接口以及获取推荐的数据接口
*/
void someMethodsDemo() {
// 主动登录
mCommSDK.login(getApplicationContext(), new LoginListener() {
@Override
public void onStart() {
}
@Override
public void onComplete(int stCode, CommUser userInfo) {
}
});
// 获取登录SDK Manager
LoginSDKManager manager = LoginSDKManager.getInstance();
Loginable currentLoginable = manager.getCurrentSDK();
// 是否登录
currentLoginable.isLogined(getApplicationContext());
// 未登录下获取话题
mCommSDK.fetchTopics(new FetchListener<TopicResponse>() {
@Override
public void onStart() {
}
@Override
public void onComplete(TopicResponse response) {
for (Topic item : response.result) {
Log.e("", "### topic id : " + item.id + ", name = " + item.name);
topicId = item.id;
}
}
});
// 未登录情况下获取某个话题下的feed
mCommSDK.fetchTopicFeed(topicId, new
FetchListener<FeedsResponse>() {
@Override
public void onComplete(FeedsResponse response) {
Log.e("", "### 未登录下获取到某个topic下的feed : " + response.result.size());
for (FeedItem item : response.result) {
Log.e("", "### topic feed id : " + item.id + ", name = " +
item.text);
}
}
@Override
public void onStart() {
}
});
// 推荐的feed
mCommSDK.fetchRecommendedFeeds(new FetchListener<FeedsResponse>() {
@Override
public void onComplete(FeedsResponse response) {
Log.e("", "### 推荐feed code : " + response.errCode + ", msg = " + response.errMsg);
for (FeedItem item : response.result) {
Log.e("", "### 推荐feed id : " + item.id + ", name = " + item.text);
}
}
@Override
public void onStart() {
}
});
// 获取推荐的话题
mCommSDK.fetchRecommendedTopics(new FetchListener<TopicResponse>() {
@Override
public void onComplete(TopicResponse response) {
Log.e("", "### 推荐的话题 : ");
for (Topic item : response.result) {
Log.e("", "### 话题 : " + item.name);
}
}
@Override
public void onStart() {
}
});
// 获取某个话题活跃的用户
mCommSDK.fetchActiveUsers("541fe6f40bbbaf4f41f7aa3f", new FetchListener<UsersResponse>() {
@Override
public void onStart() {
}
@Override
public void onComplete(UsersResponse response) {
Log.e("", "### 某个话题的活跃用户 : ");
for (CommUser user : response.result) {
Log.e("", "### 活跃用户 : " + user.name);
}
}
});
// 获取某用户的相册,也就是发布feed上传的所有图片
mCommSDK.fetchAlbums(CommConfig.getConfig().loginedUser.id,
new FetchListener<AlbumResponse>() {
@Override
public void onStart() {
}
@Override
public void onComplete(AlbumResponse response) {
Log.e("", "### response size : " + response.result.size());
}
});
// 搜索周边的feed
mCommSDK.searchFeedNearby(116.3758540000f, 39.9856970000f,
new FetchListener<FeedsResponse>() {
@Override
public void onComplete(FeedsResponse response) {
Log.e("", "### 周边的feed : " + response.result.size());
}
@Override
public void onStart() {
}
});
}
}