Giter Site home page Giter Site logo

receiver-android's People

Contributors

bluemarkinnovations avatar friissoren avatar gabrielcox avatar gilovi avatar ikejason avatar janusw avatar lukasbrchl avatar muramura avatar sxjack avatar toshihiromakuuchi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

receiver-android's Issues

Fix logging of payload raw bytes

At the start of the log, the payload raw bytes are not all present in the log data. The data clearly was present, since the parsed data in the log shows the values. But for the raw byte dump, the length is only slowly increasing with 2 or 3 bytes at a time until it reaches the full length.

It is possible this is specific to message pack messages.

This behavior has been observed in logs of WiFi Beacon transmitted data, but it is quite possible it exists also for other transmission types. I.e. the problem is probably somewhere in the application logging code.

List of transmitter devices

Since this repo has a very nice and useful list of supported smartphones that are capable of receiving DRI signals, one could also think about doing the same for the transmitter side. I could imagine a list of DRI-capable transmitter devices, including the supported transport types (BLE 4/5, WiFi Beacon and NAN), covering at least these two categories:

  • actual drones (UAV) that support DRI out of the box
  • add-on devices that can be attached to a UAV

Possibly one could also include further categories, like dev kits / boards (e.g. ESP32-based) or generic BLE/WiFi hardware with a suitable transmitter implementation.

I guess this sort of list would be quite useful for people interested in DRI technology and could help giving an overview of possible transmitters. I could certainly contribute a few.

The list could either be hosted in this repo, or somewhere else in the opendroneid org.

Any thoughts or feedback on this idea?

Download this app from Google Play ?

In Japan, after June 20, 2022, you are obliged to report your remote ID when you register your aircraft.
I think this app can be downloaded from Google Play so that drone users and managers can easily use it.

Integrate with Flutter

Hello Author,

Thank you for this essential utility.

How can I embed this utility into the Flutter project?

Hi, trying to make apk, last android studio Android api 30 built tools 28-32 not working, gradle version, and his plugin version 7.0.2

Hi, trying to make apk, last android studio Android api 30 built tools 28-32 not working, gradle version, and his plugin version 7.0.2

Task :app:compileDebugJavaWithJavac
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\DebugActivity.java:181: warning: [deprecation] getExternalStoragePublicDirectory(String) in Environment has been deprecated
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "OpenDroneID");
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\DebugActivity.java:226: warning: [deprecation] setWifiEnabled(boolean) in WifiManager has been deprecated
wifiManager.setWifiEnabled(true);
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\DebugActivity.java:333: warning: [deprecation] Handler() in Handler has been deprecated
handler = new Handler();
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\bluetooth\WiFiBeaconScanner.java:84: warning: [deprecation] setWifiEnabled(boolean) in WifiManager has been deprecated
wifiManager.setWifiEnabled(true);
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\bluetooth\WiFiBeaconScanner.java:182: warning: [deprecation] startScan() in WifiManager has been deprecated
boolean ret = wifiManager.startScan();
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\DeviceList.java:233: warning: [deprecation] setColorFilter(int,Mode) in Drawable has been deprecated
droneIcon.setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY);
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\HelpMenu.java:33: warning: [deprecation] fromHtml(String) in Html has been deprecated
helpView.setText(Html.fromHtml(linkText));
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\HelpMenu.java:43: warning: [deprecation] fromHtml(String) in Html has been deprecated
helpView.setText(Html.fromHtml(linkText));
^
E:\desctop\Android\app\src\main\java\org\opendroneid\android\app\HelpMenu.java:50: warning: [deprecation] fromHtml(String) in Html has been deprecated
helpView.setText(Html.fromHtml(linkText));

What is the license of this source?

The source license published on GitHUB is defined at the following URL.

However, without a license, the default copyright laws apply, meaning that you retain all rights to your source code and no one may reproduce, distribute, or create derivative works from your work.

I wish this source was open source and under the APACHE-2.0 license.

Please install the license.

https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository#choosing-the-right-license

Crashing every time it detects Mavic 3 Enterprise

Testing with no drones in the air it's fine. As soon as the app detects my M3E the app crashes. Using LG V60.

Log-
session,timestamp (nanos),transportType,macAddress,msgVersion,rssi,payload,idType,uaType,uasId,idType,uaType,uasId,status,heightType,EWDirection,speedMult,direction,speedHori,speedVert,droneLat,droneLon,altitudePressure,altitudeGeodetic,height,horizontalAccuracy,verticalAccuracy,baroAccuracy,speedAccuracy,timestamp,timeAccuracy,distance,descriptionType,operationDescription,operatorLocationType,classificationType,operatorLatitude,operatorLongitude,areaCount,areaRadius,areaCeiling,areaFloor,category,classValue,operatorAltitudeGeo,systemTimestamp,operatorIdType,operatorId,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,authType,authDataPage,authLastPageIndex,authLength,authTimestamp,authData,
0,281646140031907,Beacon,60:60:1f:02:d4:f9,2,-65,F1 F2 19 03 02 12 31 35 38 31 46 35 46 48 42 32 32 39 46 30 30 32 30 32 44 52 00 00 00 12 22 63 15 00 7C BA 74 14 54 FC 70 CC 00 00 8F 0A 42 08 3A 02 8B 3D 0A 00 42 01 42 B7 74 14 F7 E0 70 CC 01 00 00 00 00 00 00 00 20 0A F7 C1 99 07 00 00 00 00 00 ,1,2,1581F5FHB229F00202DR,,,,2,0,1,0,99,21,0,343194236,-865010604,0,2703,2114,10,3,0,2,15755,10,66.72754,,,1,0,343193410,-865017609,1,0,0,0,0,0,2592,127517175,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0,281649402536177,Beacon,60:60:1f:02:d4:f9,2,-67,00 F2 19 03 02 12 31 35 38 31 46 35 46 48 42 32 32 39 46 30 30 32 30 32 44 52 00 00 00 12 22 63 1F 00 AD BB 74 14 17 F3 70 CC 00 00 8F 0A 42 08 3A 02 AB 3D 0A 00 42 01 3D B7 74 14 A2 E0 70 CC 01 00 00 00 00 00 00 00 20 0A FA C1 99 07 00 00 00 00 00 ,1,2,1581F5FHB229F00202DR,,,,2,0,1,0,99,31,0,343194541,-865012969,0,2703,2114,10,3,0,2,15787,10,45.518757,,,1,0,343193405,-865017694,1,0,0,0,0,0,2592,127517178,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Add a tag and release for version 2.0

Apparently version 2.0 was released on December 7 (f9dc8ec), but it's still missing a tag and a release in the github project. Looking at the starting page and the releases page, it looks like the latest release is 1.9.0, which is very old by now.

Also it would be nice if a short description could be added in the project's "About" field. Currently it just says: No description, website, or topics provided.
Might be sufficient to just use OpenDroneID Android receiver application, maybe with a link to http://www.opendroneid.org?

take-off location shown as pilot location

Apart from the red marker for the drone, one can see an additional blue marker on the map. The ReadMe says that this indicates the location of the operator (if that data field is being received). If clicked, it shows a label with the text pilot <serial>, where <serial> is the serial number of the device it belongs to.

Now I have a transmitter which does not report the pilot location, but instead the take-off location. It's good that the second marker is still shown (indicating the take-off location in this case, I assume). But the marker label still says pilot, which is clearly misleading.

I suggest that the label of the blue marker should either say pilot or take-off, depending on the operator location type. The ReadMe should also be updated accordingly.

Pixel 4A / Motorola G7

Both the Motorola G7 and Pixel 4A are unable to pick up emitted WiFi Beacons from the DJI Air 2S.

I'm unsure if this is an issue with the drone or the phones.

I had previously added some info for Motorola G7 and here's the info for the Pixel 4A.

Screenshot (Nov 3, 2022 11_32_50 PM)

Screenshot (Nov 3, 2022 11_36_26 PM)

I do not expect anything from this issue than an update to the devices list and closing it... UNLESS you have some idea of where I did a stupid on this? I have confirmed that scan throttling is off on both devices.

Scanning / x Drones Detected

I'm trying to alter the code slightly so when no drones are detected, it stated "Scanning", however when it detects a drone, it displays 1 Drone Detected for example.

This is what I have for DebugActivity.java but it always seems to default to 0 Drones Detected instead of Scanning, any ideas please?

` private void initialize() {
mModel.setAllAircraft(dataManager.getAircraft());

    final Observer<Set<AircraftObject>> listObserver = airCrafts -> {
        if (airCrafts == null) {
            setTitle(String.format(Locale.US, "Scanning...", airCrafts.size()));
    } else if (airCrafts != null) {
            setTitle(String.format(Locale.US, "%d Drones Detected", airCrafts.size()));
        }
    };`

Find out the appropriate sorting mechanism for supported devices.

The list of supported devices for receiving the DRI signals is now unordered. It would be nice to have some logical order so that people can find their devices easier.

Suggestion from @janusw

Wouldn't it be useful to sort the list in some way? Currently I see no particular order, except for the fact that Samsung comes first and brands seem to be aggregated in blocks :)

Possible ordering schemes that come to mind:

  • alphabetical by brand/model
  • degree of support
  • chipset
  • ...

Unable to get the google_maps_api working

I correctly inserted the api key generated on google maps platform and correcly compiled the app in release variant with self-signed key but after many tries I couldn't succeed and the map view is not working. I anso tried to restrict the api only to org.opendroneid.android with a SHA1 generated with keytool using the key i use to sign the application without success.

WiFi Scanning frequency

Thank you for providing this utility.
It is very useful that it offers both Bluetooth and Wi-Fi scanning methods to capture drone signals. However, I have noticed that the frequency of the Wi-Fi signal is lower compared to Bluetooth. This results in a lower refresh rate for location information when using Wi-Fi scanning, while Bluetooth is working fine and providing location information more frequently.

I am interested in learning how to adjust the Wi-Fi frequency to increase the frequency of location updates. Could you please provide guidance on how to do so?

Thank you,
Rashesh

Rejecting permissions can stop the app from working on Android 12

Google seems to have changed something on Android 12. If the user doesn't grant permissions when they are being requested, the toast messages that give feedback to the user are not visible. Even the recent changes to use a snackbar instead doesn't seem to help with this problem.

And worse, if the user continue to reject permissions, at some point the app won't even ask anymore and can't even be started to make another request.

Don't know if this is an issue or a mistake from me

Hi,

I'm using opendroneid in esp32 I use Beacon Wifi ( I send all packet every 900ms. ID, location, SelfID and authentification ) If I sniff with Wireshark everything works I have a packet every 900ms and I use wireshark-dissector to analyse packages data and everything is good.
But when I use receiver-android the application takes time before displaying the drone, and tkae lot of time before update last seen data in Info page about the drone, the receiver is next to the drone. So my question is wich part is used to detect data in receiver-android AuthMessage ? Normally I should see the last seen field update nerly 1s if I send full packet every 900ms

security issue:fake remote id message

people can use transmitter broadcast customized fake remote id easily.This will cause false drone swarms to show up on the app.Will this be fixed in the future?

Add support for UI translations of the Help text

The content of the Help text view is currently hard-coded in the HelpMenu.java file. The main reason was to have support for hyperlinks in the text.

Figure out a way to change this to use the string resources (while still preserving the hyperlinks), so that the standard framework for UI translations can be used.

Add more information/links regarding Bluetooth 5 Long Range support

I found several links interesting links regarding Bluetooth 5 Long Range/LE coded PY support in smartphones.

A manufacturer that provides a list. (It seems to be a bit outdated as iPhones do not support LE coded PHY, but they are listed here):

A method to look up LE coded PY on the Bluetooth website for any smartphone/device:

I think that even with a free membership you can look up the SIG Qualification details to see if it is qualified for LE coded PY. @friissoren Intel is a Bluetooth member, would it be possible for you to extract a list of phones with LE coded PY support?

Interestingly most Apple iPhones seem to support LE coded PHY (first link), but it looks that Apple has dropped it after iOS 14 https://developer.apple.com/forums/thread/665542. So it is a software issue, that Apple could potentially enable again in the future.

Moto Edge Pro 20 - Long Range capabilities

Hi,

Smartphone Model Chipset Android version BT 5 LR Basic Support (Elimination criteria) BT 5 LR Receiver Support Wi-Fi Beacon Wi-Fi NAN Proof Note
Motorola Edge 20 Pro Snapdragon 870 5G (7 nm) 11 ✅ 3/2022 ❌ 3/2022 To_Be_added Long range support is claimed but the signals are never received. Test done using LAUNCHXL-CC1352P-2 from Texas Instrument.

Screen shot with "nRF Connect for Mobile" attached to this issue.
Device Information - Motorola Edge 20 Pro

Extremely frustrated, since a premium cell phone like this doesn't support LR.

Add option for disabling display timeout

It would be useful to have an option for disabling the display timeout. The app is often used for longer periods of time to track/scan for drones and it is annoying to have to touch it regularly or manually change the display timeout to prevent the display going black.

Combine signals from BT, NaN and Beacon if originating from the same drone

The ESP32 HW is capable of transmitting BT4, BT5, NaN and Beacon simultaneously. This will show up as three separate drones in the list view though.

For Bluetooth, the receiver code can use the MAC address of the BT4 signals and match against the MAC address of the BT5 signals and combine the two. This happens already in the Android driver layers somewhere. This is not possible to combine with Wi-Fi. The Android NaN API doesn’t even give out the MAC address (just some auto-generated unique number) and the Beacon MAC is unlikely to be the same as the BT MAC. It seems that the NaN number doesn’t even stay fixed.

Try to see if it is possible for the app to scan e.g. the serial IDs and combine the received signals from BT, NaN and Beacon into a single drone item.

Make WiFi Beacon reception work also on devices that are not running Android 11

It should be possible to pick up the data content of the WiFi Beacon messages also on devices that are not running Android 11, via this "hidden" API:
https://android.googlesource.com/platform/frameworks/base/+/lollipop-release/wifi/java/android/net/wifi/ScanResult.java#221

Getting this implemented and verified would probably require creating a WiFi Beacon transmitter first, in order to have something to validate against. E.g. take the ESP32 French ID transmitter implementation and modify the OUI and the payload format to correspond to the ASD-STAN specification instead.
https://github.com/sxjack/uav_electronic_ids/tree/main/id_france

DJI Air 2S

New Firmware has added RID support through WiFi Beacon.

I have not been able to receive one but the drone says it's working.

User input of self-id, operator-id, system etc. info and sending via MAVLink messages to UAS

Idea received from @tridge.

Add mavlink output support in the opendroneid android receiver app. It would create a bluetooth serial service which a GCS can connect to. The opendroneid receiver app would then send SELF_ID, OPERATOR_ID, SYSTEM and BASIC_ID via MAVLink. It would need to have a screen to enter the details for those packets. The GCS would then forward those packets to the aircraft. The big advantage is this would give users both a view showing their remote ID is working (on the receiver app screen) and also provide the required information using the phones GPS. It would be somewhat similar to what the various "turn your phones GPS into a bluetooth NMEA GPS" apps on the play store, but sending MAVLink OpenDroneID msgs instead of NMEA.

Can't see BLE Long Range on Samsung Galaxy S10+

I downloaded your project and build it. I am not able to see my BLE device. But I have used NRF Connect android app it is showing the device. What could be that will be going wrong. Can you please further guide me on this.

Thanks

WiFi-NAN devices show up multiple times

While BT and WiFi-Beacon devices only show up once in the list of devices (they have a fixed MAC), WiFi-Beacon devices show up multiple times (apparently because the NAN Id is changing frequently).

One would need to deduplicate this via the ID info provided by the device in the DRI packets, I guess?

maximum receiving distance

I am curious up to what distance, the various smartphones receive a (stable) signal. I guess, there are big differences. The same goes for the other direction, i.e. how far each smartphone can send data.

Replace the usage of deprecated APIs with newer ones

When compiling, there are several warnings about using deprecated APIs. Figure out if it is possible to replace their usage with some APIs that are not deprecated.

C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\DebugActivity.java:186: warning: [deprecation] getExternalStoragePublicDirectory(String) in Environment has been deprecated
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "OpenDroneID");
                                        ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\DebugActivity.java:231: warning: [deprecation] setWifiEnabled(boolean) in WifiManager has been deprecated
                    wifiManager.setWifiEnabled(true);
                               ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\DebugActivity.java:338: warning: [deprecation] Handler() in Handler has been deprecated
        handler = new Handler();
                  ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\bluetooth\WiFiBeaconScanner.java:84: warning: [deprecation] setWifiEnabled(boolean) in WifiManager has been deprecated
            wifiManager.setWifiEnabled(true);
                       ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\bluetooth\WiFiBeaconScanner.java:182: warning: [deprecation] startScan() in WifiManager has been deprecated
        boolean ret = wifiManager.startScan();
                                 ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\DeviceList.java:233: warning: [deprecation] setColorFilter(int,Mode) in Drawable has been deprecated
                    droneIcon.setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY);
                             ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\HelpMenu.java:33: warning: [deprecation] fromHtml(String) in Html has been deprecated
        helpView.setText(Html.fromHtml(linkText));
                             ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\HelpMenu.java:43: warning: [deprecation] fromHtml(String) in Html has been deprecated
        helpView.setText(Html.fromHtml(linkText));
                             ^
C:\Android\receiver-android\Android\app\src\main\java\org\opendroneid\android\app\HelpMenu.java:50: warning: [deprecation] fromHtml(String) in Html has been deprecated
        helpView.setText(Html.fromHtml(linkText));
                             ^
9 warnings

Motorola G7 Support Info

I don't expect anything from this, just putting data for support.
Close this issue as soon as the data is added to the supported table.

No WifiAware, No BLE5, although Drone Scanner says it can pick up WiFi beacons.

Screenshot_20221012-161650
Screenshot_20221012-161606

Bluetooth beacon transponder?

Is anyone aware of any bluetooth beacon transponder application I could use to test the android receiver application? I'm using beacon simulator and added the UUID but nothing is showing up as a drone. Is there a setting that I'm not setting correctly for the receiver-android app?

Thanks,
Kevin

Bug: Not detecting some BT devices.

in OpenDroneIdDataManager.java at line 54 the offset is hardcoded and assumes the payload always starts with a RemoteID packet, some devices will send additional information offsetting the RemoteID packet.

example packet from RemoteID transmitter: [0x02,0x01,0x06,0x02,0x0A,0x08,0x1E,0x16,0xFA,0xFF,0x0D,0x11,0x12,0x07,0x0F,0x14,0x14,0xF1,0x4B,0x94,0x14,0x1E,0x16,0xBE,0xBD,0x82,0x00,0x82,0x00,0x01,0x00,0x6C,0x11,0x59,0x01,0x01,0x00]

Line54: OpenDroneIdParser.parseData(data, 6, result.getTimestampNanos(), logMessageEntry, receiverLocation);

Correct the layout of the French translation

In the version 3.3.2 of the application that is now on the Google Playstore, I have removed the French translation because the layout of the Info view is so messed up that many of the field values can't be seen properly.
https://play.google.com/store/apps/details?id=org.opendroneid.android_osm

It would be great if someone with French language skills could shorten the various translated strings, so that the layout becomes reasonably orderly again. Then we can get this translation back into the app version on the store.

There are also some new strings that have been added that haven't been translated to French at all.

@Tissy : Maybe you would have a possibility to look at this?

French

Add transmitter capabilities

Carrying over an idea from #13 (comment):

Wouldn't it be a good idea to add such a transmitter capability to the Android receiver app, so it could (optionally) also act as a "drone simulator" and transmit data to other instances of the app? I imagine that this might be very useful for testing and experimenting.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.