{"id":19900111,"url":"https://github.com/m-lab/ndt7-client-android","last_synced_at":"2025-05-02T23:30:29.407Z","repository":{"id":54251206,"uuid":"150860070","full_name":"m-lab/ndt7-client-android","owner":"m-lab","description":"ndt7 Android-native client","archived":false,"fork":false,"pushed_at":"2024-06-08T20:49:14.000Z","size":213,"stargazers_count":12,"open_issues_count":8,"forks_count":11,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-29T13:50:08.439Z","etag":null,"topics":["bbr","ndt","ndt7","network-performance-test","network-speed","tcpinfo"],"latest_commit_sha":null,"homepage":"https://www.measurementlab.net/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-29T12:01:37.000Z","updated_at":"2024-09-30T05:04:42.000Z","dependencies_parsed_at":"2024-11-06T15:37:28.774Z","dependency_job_id":"f8712e39-17da-40da-92b3-2adbfd509c17","html_url":"https://github.com/m-lab/ndt7-client-android","commit_stats":{"total_commits":30,"total_committers":7,"mean_commits":4.285714285714286,"dds":0.6666666666666667,"last_synced_commit":"3e831b785bf4086fddb8e700458588e39b493cf0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fndt7-client-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fndt7-client-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fndt7-client-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fndt7-client-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-lab","download_url":"https://codeload.github.com/m-lab/ndt7-client-android/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223997504,"owners_count":17238539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bbr","ndt","ndt7","network-performance-test","network-speed","tcpinfo"],"created_at":"2024-11-12T20:11:13.181Z","updated_at":"2024-11-12T20:11:14.198Z","avatar_url":"https://github.com/m-lab.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ndt7-kotlin\n\nKotlin implementation of the [NDT7 protocol by M-Lab](https://github.com/m-lab/ndt-server/blob/master/spec/ndt7-protocol.md)\n\n\n# How it works\n\nConsumers wishing to use the NDT7 speed test should create a subclass of type `NDTTest` and override the functions that it exposes\n\n--------------------------------------------------------------------------------------------------------------------------------------------------------\n\n```\n    open fun onMeasurementDownloadProgress(measurement: Measurement) {\n    }\n```\nReturns Measurement information during the download speed test. You can look at the Measurement data class to understand what this will provide. If you are purely interested in download speed, you don't need to override this\n\n\n\n--------------------------------------------------------------------------------------------------------------------------------------------------------\n\n```\n    open fun onMeasurementUploadProgress(measurement: Measurement) {\n    }\n```\nReturns Measurement information during the upload speed test. You can look at the Measurement data class to understand what this will provide. If you are purely interested in upload speed, you don't need to override this\n\n   \n   \n   --------------------------------------------------------------------------------------------------------------------------------------------------------\n\n```\n    open fun onDownloadProgress(clientResponse: ClientResponse) {\n    }\n```\nThis returns the ElapsedTime and NumBytes during the download test. ElapsedTime is in *microseconds*. \nTo ease data transformation into the commonly used `mbps`, we expose a static class that assists with the calculations\n`DataConverter.convertToMbps(clientResponse) will generate a String that represents the speed in mbps. Note this is mega*BITS* per second.\n\n\n\n--------------------------------------------------------------------------------------------------------------------------------------------------------\n\n```\n    open fun onUploadProgress(clientResponse: ClientResponse) {\n    }\n```\nThis returns the ElapsedTime and NumBytes during the upload test. ElapsedTime is in *microseconds*. \nTo ease data transformation into the commonly used `mbps`, we expose a static class that assists with the calculations\n`DataConverter.convertToMbps(clientResponse) will generate a String that represents the speed in mbps. Note this is mega*BITS* per second.\n\n--------------------------------------------------------------------------------------------------------------------------------------------------------\n\n\n\n```\n    open fun onFinished(clientResponse: ClientResponse?, error: Throwable?, testType: TestType) {\n    }\n```\nThis will be called when a speed test is finished. It includes the type of test. If you run both an upload and download test, this will be fired twice. Once with download results and once with the upload results.\nYou should also check the `error` is null. The reason for this is to allow the consumer to determine if they wish to use the results. The test may run for 9/10 seconds and then error. The consumer may believe that the results are accurate enough to use. Error will be null if the test completed successfully. Otherwise, it is up to the consumer to determine if they wish to run another scan or if they believe the partial results are acceptable\n  \n--------------------------------------------------------------------------------------------------------------------------------------------------------\n\n    \nWe've provided two implementation examples, one for kotlin and one for java. To change which implementation is used, you need to adjust which activity is defined in the manifest\n\n```\n\u003c!--        \u003cactivity android:name=\".MainActivity\"\u003e--\u003e //this is for kotlin\n        \u003cactivity android:name=\".JavaMainActivity\"\u003e //this is for java\n        \n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-lab%2Fndt7-client-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-lab%2Fndt7-client-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-lab%2Fndt7-client-android/lists"}