facebook和twitter的截图分享
记录一下代码,以后自己可以抄。。我抄我自己=。=
SDK的接入看之前的博客。所以话不多少,直接上代码(记得分享一定要安装原生app(FB和twitter),不然只通过网页分享无法发图片。),初始化都在onCreate()中
一、截屏(android 5.0以上)
定义:
CallbackManager callbackManager;
ShareDialog shareDialog;
GameRequestDialog requestDialog;
ImageReader mImageReader;
(1)获取截屏权限
startActivityForResult(((MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE)).createScreenCaptureIntent(),1); (2)截屏回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("Facebook1", "onActivityResult");
AndroidLog("requestCode:"+String.valueOf(requestCode)+"resultCode"+String.valueOf(resultCode));
super.onActivityResult(requestCode, resultCode, data); parseData(data); }
private void parseData(Intent data){
MediaProjection mMediaProjection = ((MediaProjectionManager)getSystemService(Context.MEDIA_PROJECTION_SERVICE)).getMediaProjection(Activity.RESULT_OK,data);
if (mMediaProjection == null)
return;
AndroidLog("截屏初始化"); mImageReader = ImageReader.newInstance(
getScreenWidth(this),
getScreenHeight(this),
PixelFormat.RGBA_8888,1);
// AndroidLog(mImageReader.toString());
VirtualDisplay mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror",
getScreenWidth(this),
getScreenHeight(this),
Resources.getSystem().getDisplayMetrics().densityDpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mImageReader.getSurface(), null, null);
}
public static int getScreenWidth(Context context)
{
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthPixels;
}
public static int getScreenHeight(Context context)
{
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightPixels;
}
二、facebook分享和邀请
(1)初始化facebook
/**
* facebook配置, 在oncreate()方法中调用
*/
private void initFacebook() {
//抽取成员变量
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);//分享
requestDialog = new GameRequestDialog(this);//邀请好友 // this part is optional
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { @Override
public void onSuccess(Sharer.Result result) {
//分享成功的回调,在这里做一些自己的逻辑处理
} @Override
public void onCancel() { } @Override
public void onError(FacebookException error) {
AndroidLog(error.toString());
}
}); requestDialog.registerCallback(callbackManager,
new FacebookCallback<GameRequestDialog.Result>() {
public void onSuccess(GameRequestDialog.Result result) {
String id = result.getRequestId();
}
public void onCancel() {}
public void onError(FacebookException error) {}
}
); } (2)分享
/**
* 这是一个按钮的点击事件,分享到facebook
* 若未安装facebook客户端,则会跳转到浏览器
*
* @param
*/
public void shareToFacebook() {
//这里分享一个链接,更多分享配置参考官方介绍:https://developers.facebook.com/docs/sharing/android
AndroidLog("点击分享按钮");
Image image = mImageReader.acquireLatestImage();
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap mBitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(buffer);
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, width, height);
image.close();
//AndroidLog(mBitmap.toString());
//上一步获得位图后直接分享,不保存在本地。
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(mBitmap)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.build();
)
(3)邀请
private void onClickRequestButton() {
GameRequestContent content = new GameRequestContent.Builder()
.setMessage("Come play this Game !! This test facebook sdk")
.build();
requestDialog.show(content);
}
三、Twitter分享
(1)初始化
Twitter.initialize(this); (2)分享
public void shareToTwitter() {
Image image = mImageReader.acquireLatestImage();
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap mBitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(buffer);
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, width, height);
image.close(); //套路还是一样的,只是twitter分享图片需要填uri
ContentValues values = new ContentValues();
//values.put(MediaStore.Images.Media.insertImage() , "jinta");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI ,values);
AndroidLog("URI路径 :"+uri.toString());
OutputStream os = null;
try
{
// 获取刚插入的数据的Uri对应的输出流
os = getContentResolver().openOutputStream(uri);
// 将bitmap图片保存到Uri对应的数据节点中
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
os.close();
}
catch (IOException e) {
e.printStackTrace();
} TweetComposer.Builder builder = new TweetComposer.Builder(this)
.text("Can you help complete all the orders and save the factory?")
.image(uri);//using content://.... FileProvider.getUriForFile(this,APPID.file_provider,new File("/path/to/image"));
builder.show();
}
facebook和twitter的截图分享的更多相关文章
- Android Facebook和Twitter登录和分享完整版
最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...
- 使用facebook和twitter进行分享经验总结
凤凰涅槃,浴火重生. 在传说当中,凤凰是人世间幸福的使者,每五百年,它就要背负着积累于在人间的所有痛苦和恩怨情仇,投身于熊熊烈火中自焚,以生命和美丽的终结换取人世的祥和与幸福.同样在肉体经受了巨大的痛 ...
- Facebook等使用苹果源生分享
1.Facebook官方的SDK分享 2.ShareSDK,第三方集成的分享方式 3.网页分享方式分享 4.IOS6之后,苹果自己集成了对于F ...
- Android Facebook和Twitter分享
1. 背景 在年初的时候,公司的项目有个新的需求,在英文版的应用中加入Facebook和Twitter分享功能. 2. 完成情况 由于这个项目比较急,所以开发这个功能从预研到接入总共耗时一周.后来,在 ...
- 移动端折腾国外分享(facebook、twitter、linkedin)
一.前言 国内做HTML5页面,关注最多就是微信分享了,之前也写过关于微信分享的文章,可以点击查看:分享相关文章 再者,就是国内的其它分享,比如常用的新浪微博.腾讯微博.QQ空间等等,最方便的就是直接 ...
- twitter、facebook、pinterest、linkedin 分享代码
twitter.facebook.pinterest.linkedin 分享代码 http://www.cnblogs.com/adstor-Lin/p/3994449.html
- web网页动态分享facebook和twitter
介绍 facebook分享 http://www.facebook.com/sharer.php?t=${text}u=encodeURIComponent('静态html') twitter分享 h ...
- 分享前端Facebook及Twitter第三方登录
最近公司要求做海外的第三方登录:目前只做了Facebook和Twitter;国内百度到的信息太少VPN FQ百度+Google了很久终于弄好了.但是做第三方登录基本上都有个特点就是引入必须的js,设置 ...
- 为什么中国出不了facebook和Twitter?
我们坐拥全球最大基数的网民,我们拥有让人骄傲的四大发明,我们有有流传全世界的孙子兵法,可是在互联网时代,我们却落后了.互联网可以说是江山人才辈辈出,各领风骚三两年. 让我们来简单地回顾一下近几年的互联 ...
随机推荐
- nginx alias
A path to the file is constructed by merely adding a URI to the value of the root directive. If a UR ...
- BZOJ5418:[NOI2018]屠龙勇士(exCRT,exgcd,set)
Description Input Output Sample Input 23 33 5 74 6 107 3 91 9 10003 23 5 64 8 71 1 11 1 Sample Outpu ...
- Day14 集合(一)
集合总体介绍 Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列 ...
- Java静态代理学习
代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式一般涉及 ...
- Servlet 处理请求
一:Servlet 处理请求也是通过request来进行处理,类似于python. get请求通过request.getparameter("key");key为前端传过来的key ...
- HDU 1074 Doing Homework 状压dp(第一道入门题)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 【Unix 网络编程】TCP 客户/服务器简单 Socket 程序
建立一个 TCP 连接时会发生下述情形: 1. 服务器必须准备好接受外来的连接.这通常通过调用 socket.bind 和 listen 这三个函数来完成,我们称之为被动打开. 2. 客户通过调用 c ...
- OO学习体会与阶段总结(多线程程序)
前言 在最近一个月的面向对象编程学习中,我们进入了编写多线程程序的阶段.线程的创建.调度和信息传递,共享对象的处理,线程安全类的编写,各种有关于线程的操作在一定程度上增加了近三次作业的复杂度与难度,带 ...
- Linux服务-NFS
目录 1. nfs简介 1.1 nfs特点 1.2 使用nfs的好处 1.3 nfs的体系组成 1.4 nfs的应用场景 2. nfs工作机制 2.1 RPC 2.2 NIS 2.3 nfs工作机制 ...
- 利用js编写一个简单的html表单验证,验证通过时提交数据(附源码)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...