Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用开放图形API在Android中发布健身课程数据点位置_Android_Facebook_Facebook Graph Api_Geolocation - Fatal编程技术网

使用开放图形API在Android中发布健身课程数据点位置

使用开放图形API在Android中发布健身课程数据点位置,android,facebook,facebook-graph-api,geolocation,Android,Facebook,Facebook Graph Api,Geolocation,我正在开发一个Android健身应用程序,我正在尝试使用开放图形API在Facebook上发布活动数据点位置。我使用了以下代码,它只发布了location1,而没有添加到列表中的其他位置 public void shareWorkout (View v){ if (FacebookDialog.canPresentShareDialog(getApplicationContext(), FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {

我正在开发一个Android健身应用程序,我正在尝试使用开放图形API在Facebook上发布活动数据点位置。我使用了以下代码,它只发布了
location1
,而没有添加到列表中的其他位置

public void shareWorkout (View v){
    if (FacebookDialog.canPresentShareDialog(getApplicationContext(), FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
        OpenGraphObject course = OpenGraphObject.Factory.createForPost(null);
        course.setType("fitness.course");
        course.setTitle("Walking Course");
        course.setUrl("http://samples.ogp.me/136756249803614");
        course.setDescription("walked a course");

        GraphObject location1 = GraphObject.Factory.create();
        location1.setProperty("latitude", 31.90592568833381f);
        location1.setProperty("longitude", 35.20052916370332f);
        location1.setProperty("altitude", 0.0f);

        GraphObject location2 = GraphObject.Factory.create();
        location2.setProperty("latitude", 31.912331976927817f);
        location2.setProperty("longitude", 35.205821581184864f);
        location2.setProperty("altitude", 0.0f);

        List<GraphObject> locations = new ArrayList<GraphObject>();
        locations.add(location1);
        locations.add(location2);

        GraphObject metrics = GraphObject.Factory.create();
        metrics.setProperty("location", locations);

        course.getData().setProperty("metrics", metrics);

        OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
        action.setProperty("course", course);

        FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(this,
        action, "fitness.walks", "course").build();            
        uiHelper.trackPendingDialogCall(shareDialog.present());
    }
}
public void shareWorkout(视图五){
if(FacebookDialog.canPresentShareDialog(getApplicationContext(),FacebookDialog.ShareDialogFeature.SHARE_DIALOG)){
OpenGraphObject课程=OpenGraphObject.Factory.createForPost(空);
course.setType(“fitness.course”);
课程名称(“步行课程”);
course.setUrl(“http://samples.ogp.me/136756249803614");
课程。设置描述(“走了一条课程”);
GraphObject location1=GraphObject.Factory.create();
位置1.设置属性(“纬度”,31.90592568833381f);
位置1.设置属性(“经度”,35.20052916370332f);
位置1.设置属性(“高度”,0.0f);
GraphObject location2=GraphObject.Factory.create();
位置2.设置属性(“纬度”,31.912331976927817f);
位置2.设置属性(“经度”,35.205821581184864f);
位置2.设置属性(“高度”,0.0f);
列表位置=新的ArrayList();
位置。添加(位置1);
位置。添加(位置2);
GraphObject metrics=GraphObject.Factory.create();
metrics.setProperty(“位置”,位置);
course.getData().setProperty(“metrics”,metrics);
OpenGraphAction=GraphObject.Factory.create(OpenGraphAction.class);
行动。设置属性(“路线”,路线);
FacebookDialog shareDialog=新建FacebookDialog.OpenGraphActionDialogBuilder(此,
动作,“健身、散步”、“课程”).build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
}

我还试图在facebook上分享一门课程

像上面提到的一样,您应该包括尽可能多的可用指标(速度、地理点、距离)

因此,对于每个新位置,您必须创建一个新的度量对象,带有位置、时间戳、距离和速度,并将此度量数组添加到度量属性中

以下是我的工作示例:

private void shareWorkout(Location[] locations) {
    NumberFormat doubleFormat = NumberFormat.getInstance(Locale.US);
    doubleFormat.setMaximumFractionDigits(6);
    doubleFormat.setMaximumIntegerDigits(3);
    doubleFormat.setGroupingUsed(false);

    OpenGraphObject course = OpenGraphObject.Factory
            .createForPost("fitness.course");
    course.setTitle("Sample Course");
    List<GraphObject> metrics = new ArrayList<GraphObject>();
    Location prevLocation = null;

    for (Location location : locations) {
        GraphObject metric = GraphObject.Factory.create();
        double distance = calcDistance(prevLocation, location);
        double speed = location.getSpeed() * LocationUtils.MS_TO_KMH;
        double pace = speed == 0 ? 0.0 : 60.0 / speed;
        metric.setProperty("location:longitude",
                doubleFormat.format(location.getLongitude()));
        metric.setProperty("location:latitude",
                doubleFormat.format(location.getLatitude()));
        metric.setProperty("location:altitude",
                doubleFormat.format(location.getAltitude()));
        metric.setProperty("timestamp",
                StringUtils.formatDateTimeIso8601(location.getTime()));
        metric.setProperty("distance:value", doubleFormat.format(distance));
        metric.setProperty("distance:units", "km");
        metric.setProperty("pace:value", doubleFormat.format(pace));
        metric.setProperty("pace:units", "s/m");
        metrics.add(metric);
        prevLocation = location;
    }
    GraphObject courseData = course.getData();
    courseData.setProperty("metrics", metrics);
    courseData.setProperty("distance:value", calcTime(locations));
    courseData.setProperty("distance:units", "min");
    courseData.setProperty("distance:value",
            doubleFormat.format(calcTotalDistance(locations)));
    courseData.setProperty("distance:units", "km");
    OpenGraphAction action = GraphObject.Factory
            .create(OpenGraphAction.class);
    action.setProperty("course", course);
    action.setType("fitness.walks");

    RequestBatch requestBatch = new RequestBatch();
    Request request = Request.newPostOpenGraphActionRequest(
            Session.getActiveSession(), action, shareCallback);
    requestBatch.add(request);
    requestBatch.executeAsync();
}
private void shareWorkout(位置[]位置){
NumberFormat doubleFormat=NumberFormat.getInstance(Locale.US);
doubleFormat.setMaximumFractionDigits(6);
doubleFormat.setMaximumIntegerDigits(3);
doubleFormat.setGroupingUsed(false);
OpenGraphObject课程=OpenGraphObject.Factory
.createForPost(“健身课程”);
课程名称(“样本课程”);
列表度量=新的ArrayList();
位置prevLocation=null;
对于(位置:位置){
GraphObject metric=GraphObject.Factory.create();
双倍距离=距离(前位置,位置);
双速=location.getSpeed()*LocationUtils.MS\u至\u KMH;
双配速=速度==0?0.0:60.0/速度;
metric.setProperty(“位置:经度”,
doubleFormat.format(location.getLongitude());
metric.setProperty(“位置:纬度”,
doubleFormat.format(location.getLatitude());
metric.setProperty(“位置:高度”,
doubleFormat.format(location.getAltitude());
metric.setProperty(“时间戳”,
StringUtils.formatDateTimeIso8601(location.getTime());
metric.setProperty(“距离:值”,doubleFormat.format(距离));
公制设置属性(“距离:单位”、“公里”);
metric.setProperty(“速度:值”,doubleFormat.format(速度));
公制设置属性(“速度:单位”、“s/m”);
度量。添加(度量);
位置=位置;
}
GraphObjectCoursedata=course.getData();
courseData.setProperty(“度量”,度量);
setProperty(“距离:值”,计算时间(位置));
courseData.setProperty(“距离:单位”,“分钟”);
courseData.setProperty(“距离:值”,
doubleFormat.format(calcTotalDistance(locations));
courseData.setProperty(“距离:单位”、“公里”);
OpenGraphAction=GraphObject.Factory
.create(OpenGraphAction.class);
行动。设置属性(“路线”,路线);
action.setType(“fitness.walks”);
RequestBatch RequestBatch=新建RequestBatch();
Request-Request=Request.newPostOpenGraphActionRequest(
getActiveSession(),操作,shareCallback);
requestBatch.add(请求);
requestBatch.executeAsync();
}

我还试图在facebook上分享一门课程

像上面提到的一样,您应该包括尽可能多的可用指标(速度、地理点、距离)

因此,对于每个新位置,您必须创建一个新的度量对象,带有位置、时间戳、距离和速度,并将此度量数组添加到度量属性中

以下是我的工作示例:

private void shareWorkout(Location[] locations) {
    NumberFormat doubleFormat = NumberFormat.getInstance(Locale.US);
    doubleFormat.setMaximumFractionDigits(6);
    doubleFormat.setMaximumIntegerDigits(3);
    doubleFormat.setGroupingUsed(false);

    OpenGraphObject course = OpenGraphObject.Factory
            .createForPost("fitness.course");
    course.setTitle("Sample Course");
    List<GraphObject> metrics = new ArrayList<GraphObject>();
    Location prevLocation = null;

    for (Location location : locations) {
        GraphObject metric = GraphObject.Factory.create();
        double distance = calcDistance(prevLocation, location);
        double speed = location.getSpeed() * LocationUtils.MS_TO_KMH;
        double pace = speed == 0 ? 0.0 : 60.0 / speed;
        metric.setProperty("location:longitude",
                doubleFormat.format(location.getLongitude()));
        metric.setProperty("location:latitude",
                doubleFormat.format(location.getLatitude()));
        metric.setProperty("location:altitude",
                doubleFormat.format(location.getAltitude()));
        metric.setProperty("timestamp",
                StringUtils.formatDateTimeIso8601(location.getTime()));
        metric.setProperty("distance:value", doubleFormat.format(distance));
        metric.setProperty("distance:units", "km");
        metric.setProperty("pace:value", doubleFormat.format(pace));
        metric.setProperty("pace:units", "s/m");
        metrics.add(metric);
        prevLocation = location;
    }
    GraphObject courseData = course.getData();
    courseData.setProperty("metrics", metrics);
    courseData.setProperty("distance:value", calcTime(locations));
    courseData.setProperty("distance:units", "min");
    courseData.setProperty("distance:value",
            doubleFormat.format(calcTotalDistance(locations)));
    courseData.setProperty("distance:units", "km");
    OpenGraphAction action = GraphObject.Factory
            .create(OpenGraphAction.class);
    action.setProperty("course", course);
    action.setType("fitness.walks");

    RequestBatch requestBatch = new RequestBatch();
    Request request = Request.newPostOpenGraphActionRequest(
            Session.getActiveSession(), action, shareCallback);
    requestBatch.add(request);
    requestBatch.executeAsync();
}
private void shareWorkout(位置[]位置){
NumberFormat doubleFormat=NumberFormat.getInstance(Locale.US);
doubleFormat.setMaximumFractionDigits(6);
doubleFormat.setMaximumIntegerDigits(3);
doubleFormat.setGroupingUsed(false);
OpenGraphObject课程=OpenGraphObject.Factory
.createForPost(“健身课程”);
课程名称(“样本课程”);
列表度量=新的ArrayList();
位置prevLocation=null;
对于(位置:位置){
GraphObject metric=GraphObject.Factory.create();
双倍距离=距离(前位置,位置);
双速=location.getSpeed()*LocationUtils.MS\u至\u KMH;
双配速=速度==0?0.0:60.0/速度;
metric.setProperty(“位置:经度”,
doubleFormat.format(location.getLongitude());
metric.setProperty(“位置:纬度”,
doubleFormat.format(location.getLatitude());
metric.setProperty(“位置:高度”,
替身
if (shareDialog.canShow(ShareOpenGraphContent.class)) {
    shareDialog.show(content);
}