小编dam*_*ian的帖子

Google Fit SessionsApi不会在时间范围内返回所有会话

不知何故,我已经陷入了谷歌健康Android SDK的死胡同.目前,我正在构建一个应用程序,用于读取,显示和处理来自Google Fit的数据,以便用户了解其锻炼行为.

我的情况如下:我曾经在Google Pixel上进行测试 - 一切都很好,我收到了来自Google Fit的所有(超过20个)会话.一周前,我已经切换到HTC10 - 在这个设备上我只收到来自Google Fit的4个(!)会话 - 相同的应用程序,相同的代码,相同的Google Fit帐户(在Google Fit应用程序中我仍然可以看到所有训练和训练).我试图阅读的会话不是使用我的应用程序创建的,而是使用Google Fit应用程序本身创建的.但是,在旧手机上,我可以阅读它们,在新手机上我不能.

让我粘贴一些代码以便更清晰.

GoogleApiClient设置

googleApiClient = GoogleApiClient.Builder(context)
    .addApi(Fitness.HISTORY_API)
    .addApi(Fitness.SESSIONS_API)
    .addApi(Fitness.RECORDING_API)
    .addApi(Fitness.GOALS_API)
    .addScope(Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addScope(Scope(Scopes.FITNESS_BODY_READ_WRITE))
Run Code Online (Sandbox Code Playgroud)

连接后,我订阅了几个RecordingApis( ,TYPE_WORKOUT_EXERCISE,)TYPE_WEIGHTTYPE_CALORIES_EXPENDED

SessionReadRequest:

   val sessionRequest = SessionReadRequest.Builder()
                .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
                .read(DataType.TYPE_WORKOUT_EXERCISE)
                .readSessionsFromAllApps()
                .enableServerQueries()
                .build()
Run Code Online (Sandbox Code Playgroud)

阅读会议:

       Fitness.SessionsApi.readSession(googleApiClient, sessionRequest)
        .setResultCallback { result ->
            Timber.d("Sessions result: %s", result.status)
                Timber.d("Got %d sessions", result.sessions.size) // returns only 4! for 2014-NOW timerange
       }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

android google-fit-sdk google-fit

11
推荐指数
1
解决办法
588
查看次数

多模块 gradle 项目 - 执行所有单元测试

我们当前的设置看起来像这样:一个根项目有九个子模块,它们混合在纯 Java 库和 Android 库之间。

每个模块都包含功能,其中一个模块是main通过合并所有必需模块来构建 Android 应用程序的模块。

每个模块都包含很多单元测试,我想在一个 gradle 步骤中执行它们。现在我正在使用gradlew test这个,但是因为(例如)main模块有多个,product flavors它在这个模块中多次执行单元测试(对于每种风格)。

理想情况下,我只想main为某种风格和签名配置执行一次模块单元测试,但由于testFlavorDebug任务是在评估项目时创建的(据我所知),我无法在实际执行评估之前定义它。

我试图在afterEvaluate块中找到任务,我试图遍历所有模块、不同的组合和方式,但我似乎无法弄清楚如何正确设置它。

如果有人对这样的设置有一些指示或经验并且可以帮助我,我会很高兴。如果您需要其他信息,请告诉我,我会提供它们,但就项目设置而言,多模块设置非常简单。

android unit-testing gradle

8
推荐指数
1
解决办法
1453
查看次数

Wi-Fi Direct和"普通"Wi-Fi - 不同的MAC?

我目前正在尝试通过Wi-Fi Direct连接两台知道对方MAC地址的手机,并偶然发现以下问题:我收到的MAC地址

    WifiManager wifiMan = (WifiManager) this
            .getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInf = wifiMan.getConnectionInfo();
    MAC_ADDRESS = wifiInf.getMacAddress();
Run Code Online (Sandbox Code Playgroud)

WifiP2pManager发现和请求同行时收到的略有不同.示例:a0:xx:xx:...变成a2:xx:xx.... 有人知道为什么吗?我没有找到任何方法来获取"Wi-Fi Direct MAC地址",因为我认为MAC地址应该是唯一的,并且它是处理两者的相同Wi-Fi模块(正常的Wi-Fi和P2P/Direct) .这很奇怪..我该怎么办?对于我所拥有的两个设备(Galaxy Nexus),它总是只有前两个字符在MAC地址上有所不同 - 我应该简单地丢弃它们吗?遇到问题的可能性(两个仅在MAC地址的第一部分不同的设备)是否过高?

谢谢.

android wifi wifi-direct wifip2p

7
推荐指数
1
解决办法
6800
查看次数

在JellyBean上使用WiFi-Direct,WPA Supplicant搞砸了

所以几个月前我开始开发一些WiFi-Direct应用程序.几天前,我将我的Galaxy Nexus更新为Jelly Bean(4.1.x)并测试了我的应用程序,但似乎有些东西再次搞砸了......获取主要功能集已经很麻烦了在ICS上,但现在它不再起作用了.

在我的logcat中,我得到的就是这样的东西:

/wpa_supplicant(  392): p2p0: P2P-PROV-DISC-PBC-REQ a2:0b:ba:xy:zz:xx p2p_dev_addr=a2:0b:ba:xy:zz:xx pri_dev_type=10-0050F204-x name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0
I/wpa_supplicant(  392): p2p0: P2P-DEVICE-FOUND a2:0b:ba:xy:zz:xx p2p_dev_addr=a2:0b:ba:xy:zz:xx pri_dev_type=10-0050F204-5 name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0
I/wpa_supplicant(  392): p2p0: P2P-GO-NEG-REQUEST a2:0b:ba:xx:zz:xy dev_passwd_id=4
I/wpa_supplicant(  392): p2p0: P2P-FIND-STOPPED 
I/wpa_supplicant(  392): p2p0: P2P-GO-NEG-FAILURE status=7
W/Netd    (  120): No subsystem found in netlink event
D/NetlinkEvent(  120): Unexpected netlink message. type=0x11
I/wpa_supplicant(  392): p2p0: P2P-DEVICE-LOST p2p_dev_addr=a2:0b:ba:xx:zz:xy
I/wpa_supplicant(  392): p2p0: P2P-DEVICE-FOUND a2:0b:ba:xx:zz:xy p2p_dev_addr=a2:0b:ba:xx:zz:xy pri_dev_type=10-0050F204-5 name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0
Run Code Online (Sandbox Code Playgroud)

在第二部手机上正确弹出"邀请对话框","有时"(随机)它甚至可以正常工作,但只在每五次尝试或其他事情中.所以logcat告诉我,因为我不熟悉android-intern代码,谈判失败了,设备会在短时间内丢失,然后再次被发现,似乎有点搞砸了.

我的邀请是这样发出的:

public void onPeersAvailable(WifiP2pDeviceList peers) {
    if …
Run Code Online (Sandbox Code Playgroud)

android wifi wifi-direct android-4.2-jelly-bean

5
推荐指数
1
解决办法
8827
查看次数

UDP数据包(通过WiFi Direct)永远不会到达

那些阅读我之前的问题的人可能已经知道这一点:我目前正试图抓住整个WiFi Direct的东西.到目前为止我所做的就是创建连接.我想要做的是通过UDP将数据包发送到groupOwner(其IP当然是已知的) - 但它似乎每次都迷失方向.

这是我的一些代码,我有一个接收文件的服务和一个在后台提交它们的intentservice:

FileReceiverService.java

    @Override
    public void run() {
        Log.d(TAG, "Thread starting...");
        try {
            app.log("Opening UDP socket to receive files.");
            DatagramSocket socket = new DatagramSocket(PORT);
            app.log("Socket open!");
            socket.setSoTimeout(5000);
            app.log("Waiting for packet..");
            while (isRunning && !isInterrupted()) {
                DatagramPacket packet = new DatagramPacket(
                        new byte[WiFiPacket.PACKET_SIZE],
                        WiFiPacket.PACKET_SIZE);
                try {
                    socket.receive(packet);
                    app.log("Received " + packet.getLength()
                            + " bytes, trying to parse!");
                    parsePacket(packet);
                } catch (SocketTimeoutException e) {
                } catch (Exception e) {
                    app.log("Something went wrong: " + e.getMessage());
                    e.printStackTrace();
                }
            }
            socket.close(); …
Run Code Online (Sandbox Code Playgroud)

android udp wifi-direct

3
推荐指数
1
解决办法
4156
查看次数

位图 - 矩阵操作(缩放、旋转和平移)

我需要一些矩阵运算方面的帮助。我想要实现的是:

  • 缩小
  • 移动到特定位置
  • 旋转一定角度(位于位图的中心)

我的代码目前如下所示:

            Matrix matrix = new Matrix();
            matrix.preRotate(mShip.getRotation(), mShip.getX() + mShip.getCurrentBitmap().getWidth()/2f, mShip.getY()  + mShip.getCurrentBitmap().getHeight()/2f);
            matrix.setScale((1.0f * mShip.getWidth() / mShip.getCurrentBitmap().getWidth()), (1.0f * mShip.getHeight() / mShip.getCurrentBitmap().getHeight()));
            matrix.postTranslate(mShip.getX(), mShip.getY());
            mCanvas.drawBitmap(mShip.getCurrentBitmap(), matrix, mBasicPaint);
Run Code Online (Sandbox Code Playgroud)

但是旋转的中心错误,我不知道如何解决这个问题 - 我已经环顾四周,但只发现了类似的问题,没有解决方案。我认为我可能必须将其中一个操作应用于另一个操作的值,因为它们是按顺序执行的,但我不知道如何操作。

android matrix android-canvas

2
推荐指数
1
解决办法
8121
查看次数

FreeWRL,"格式不是字符串文字,没有格式参数"

所以我正在尝试构建freewrl android库,这是在本机android代码中,这意味着在C中.我不熟悉C,并且认为既然包含了构建脚本,它应该可以正常运行的盒子.- 它不是.在解决了一些小问题之后,这就是我现在正在看的内容:

/opt/freewrl/Android/jni/../../freex3d/src/lib/main/ConsoleMessage.c: In function 'fwvsnprintf':
/opt/freewrl/Android/jni/../../freex3d/src/lib/main/ConsoleMessage.c:333:4: error: format not a string literal and no format arguments [-Werror=format-security]
cc1: some warnings being treated as errors
make: *** [/opt/freewrl/Android/obj/local/armeabi/objs/FreeWRL/__/__/freex3d/src/lib/main/ConsoleMessage.o] Error 1
Run Code Online (Sandbox Code Playgroud)

ConsoleMessage.c中与之相关的代码如下:

count += sprintf(tempbuf, format);/* printf it verbatim             */
Run Code Online (Sandbox Code Playgroud)

这是以下构造或函数的一部分:

int fwvsnprintf(char *buffer,int buffer_length, const char *fmt, va_list ap)
{
    int i,j,count;
    //char tempbuf[STRING_LENGTH];
    //char format[STRING_LENGTH];
    char *tempbuf;
    char *format;
    char c;
    double d;
    unsigned u;
    char *s;
    void *v;
    tempbuf = malloc(buffer_length);
    format = malloc(buffer_length);
    count = 0; …
Run Code Online (Sandbox Code Playgroud)

c printf android-ndk

2
推荐指数
1
解决办法
997
查看次数