Coder Social home page Coder Social logo

robotemi / sdk Goto Github PK

View Code? Open in Web Editor NEW
200.0 200.0 86.0 3.77 MB

temi is an unparalleled robotic platform introducing a new dimension of development - movement. Using temi’s SDK, developers can create new functionalities and introduce new use cases via temi’s Android tablet. temi’s movement and navigation capabilities run off of it's Linux computer and uses a set of 16 sensors including a Lidar, depth cameras, driving cameras, and microphones. We encourage our developer community to suggest and request expanded functionality within the SDK and we will adhere to your needs. We want to enable you to create skills like never seen before! We will be constantly improving the SDK and its documentation. Please feel free to reach out to us with any questions or thoughts at [email protected]

Home Page: https://www.robotemi.com/

Java 21.67% Kotlin 72.06% AIDL 6.28%

sdk's Introduction

temi SDK

temi

For more information please see the website.

Download

Download the latest AAR from Maven Central or grab via Gradle:

implementation 'com.robotemi:sdk:1.131.4'

or Maven:

<dependency>
  <groupId>com.robotemi</groupId>
  <artifactId>sdk</artifactId>
  <version>1.131.4</version>
</dependency>

Snapshots of the development version are available in Sonatype's snapshots repository.

Documentation

License

Copyright 2022 temi USA inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

sdk's People

Contributors

0xmaty avatar cyrus-rbc avatar hermanshai avatar lcgao avatar leslieam avatar lucashutemi avatar ramisaban1 avatar zjn0505 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  avatar  avatar  avatar  avatar  avatar  avatar

sdk's Issues

Face detection in Temi.

Hi,

Is it possible to implement face detection on temi.? Is there any existing api to detect and tag users?

how to update temi store app for bugfix

i want update temi store app that have aleady approved and enabled
i visit temi developer page and go in "Edit App Information" in my app
but the only apk upload button is disappeared

to update, should i submit more new app ?

Access Temi Device Id

Is there a way to get a unique identifier for the robot from the SDK? Best I've found is
robot.getAdminInfo().getUserId() but that doesn't work if the user has multiple Temis.

Thanks!

No secrets.properties file

Hi, I am testing your robot in Korea :)
When I imported SDK, Gradle made errors because there is no secrets.properties file. So I made dummy file with the same name, then it worked. I recommend you patch in next version.

Detect User on Welcoming Mode

Is there some way for the application to know when the robot greets a user on welcoming mode? I want to program the robot to say something or to show some greeting screen.

Incorrect rotation with screen sharing

Hello, all,

we want to use the Android screen sharing function with Temi but unfortunately the screen is always rotated by 90 degrees. Is there a way to fix this problem? It seems so, so the tablet would think it's displayed in portrait mode.

To reproduce the problem easily you can also use the program scrcpy, here we have the same failure and think that it is related.

Best,
PureSecDE

temi_remote_screenshot

Go To 之后的回调监听

当我下发一条指令给 Temi 去到某个指定区域之后,需要做一系列的指令,比如Speak 介绍之类的。
请问。我如何知道 Go To 到达指定位置之后的监听 是否有 回调? ,因为需要到达指定区域再去处理其它 操作。

Activity Stream Documentation

Are there any examples of how to use ActivityStreamMessage and ActivityStreamObject? I'm able to receive an ActivityStreamMessage after using the camera but I can't figure out how to get the picture from it.

Thanks!

Cancel a TtsRequest

Hello all,

I am looking for an API call that cancel a running TtsRequest, like the following one:

fun speak() {
  val ttsRequest = TtsRequest.create("Hello, this is a long sentence", false)
  robot.speak(ttsRequest)
}

Is this one available?

Best,
Lorenzo.

temi stop my app

temi sometimes will stop my app and navigate to temi app home view, but not destroy my app.
I turn off stand by mode already.
I want to keep running my app, no stop.
What is the case that has this problem?

Temi crashes in my application when i speak

Temi crashes in my application when i speak "hi temi " and say any thing which temi have no answer for it then my application crashed and i received that error . i also try this in kiosk mode but not working .
02-18 10:52:03.668 10911-10989/com.roboteam.teamy.usa E/AudioRecord-JNI: Unable to retrieve AudioRecord object 02-18 10:52:04.328 227-227/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:04.345 227-22023/? E/OMXNodeInstance: setConfig(121:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001) 02-18 10:52:07.697 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:07.733 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:10.646 10911-10911/com.roboteam.teamy.usa E/gedChannelOrphanWrapper: *~*~*~ Channel {0} was not shutdown properly!!! ~*~*~* Make sure to call shutdown()/shutdownNow() and wait until awaitTermination() returns true. 02-18 10:52:10.722 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:10.735 227-13707/? E/AudioHardwareTiny: adev_open_input_stream:channel is not support 02-18 10:52:10.752 227-22030/? E/AudioHardwareTiny: getInputRouteFromDevice:device:80000004 02-18 10:52:10.758 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:10.846 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:10.863 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:11.066 227-5435/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:11.088 227-22037/? E/OMXNodeInstance: setConfig(122:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001) 02-18 10:52:14.603 227-633/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:14.621 227-22049/? E/OMXNodeInstance: setConfig(123:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001) 02-18 10:52:16.940 227-227/? E/AudioHardwareTiny: adev_open_input_stream:channel is not support 02-18 10:52:16.954 227-22054/? E/AudioHardwareTiny: getInputRouteFromDevice:device:80000004 02-18 10:52:21.826 10911-11060/com.roboteam.teamy.usa E/AudioRecord-JNI: Unable to retrieve AudioRecord object 02-18 10:52:22.586 227-633/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:22.614 227-22065/? E/OMXNodeInstance: setConfig(124:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001) 02-18 10:52:26.026 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:26.042 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:26.427 227-13707/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()---------------- 234 !!!! 02-18 10:52:26.427 227-13707/? E/MediaPlayerFactory: filePath = /data/app/com.roboteam.teamy.usa-2/base.apk 02-18 10:52:26.428 227-13707/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()---------------- return STAGEFRIGHT_PLAYER !!!! 02-18 10:52:26.572 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:26.590 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:26.626 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:26.643 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:26.819 227-13707/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:26.853 227-22083/? E/OMXNodeInstance: setConfig(125:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001) 02-18 10:52:27.439 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:27.444 227-633/? E/AudioHardwareTiny: adev_open_input_stream:channel is not support 02-18 10:52:27.461 227-22089/? E/AudioHardwareTiny: getInputRouteFromDevice:device:80000004 02-18 10:52:27.474 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:27.545 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:27.563 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:27.668 227-5719/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:27.702 227-22095/? E/OMXNodeInstance: setConfig(126:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001) 02-18 10:52:29.438 555-591/system_process E/WindowManager: Unknown window type: 2999 02-18 10:52:35.011 10911-10989/com.roboteam.teamy.usa E/AudioRecord-JNI: Unable to retrieve AudioRecord object 02-18 10:52:35.927 227-633/? E/MediaPlayerFactory: 2019 03 30 -------- getPlayerType()44444444444444 call GET_PLAYER_TYPE_IMPL() !!!! 02-18 10:52:35.959 227-22108/? E/OMXNodeInstance: setConfig(127:google.opus.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)

Can you control the timing of Temi's AI Assistant answer?

For example, is it possible to:

  1. Can I stop the robot's answer after the asr event?
  2. Can the intent of all your statements be set to one action of local nlp?
  3. Can I receive the default fallback action as a skill for all sentences?
  4. Can the app respond to all intent skills provided by Temi's AI Assistant?

temi charging

What is the lowest battery energy temi will return back to the home base? Because I want to control return back home base in my apps. Can I close the auto-return back? (For charging)

Get Rid of the “Going to XYZ” Screen

Hello all,

I would like to get rid of the screen which is shown when Temi moves onto locations, thanks to this operation:

robot.goTo("myLocation")

Thus, my goal is making the robot moving while the screen is not shown up.

Best,
Lorenzo.

Toggle Welcoming Mode

Is it possible to toggle welcoming mode on/off? It would be great to be able to have the robot only search for people at certain times.

From what I can tell, I have complete control over custom reactions to detection/interaction. I can write my code to only react in certain circumstances, but I have not figured out how to prevent the robot from "locking on" to the person that it detects and rotating to follow them.

Would it be possible to have something like constraintBeWithMe() or beWithMe() send messages to the detection listener even if the robot isn't in welcoming mode?

Thanks!

Button lock mode in Temi settings.

I set the button lock mode in Temi settings.
Can I get rid of the messages, sounds, and vibrations when I press the follow action button and the volume touch button in this state?

DialogFlow after the WakeupWord trigger

Hello all,

I activated the "Hey Temi" wake up word through the Temi's Settings page. Does it use DialogFlow to answer after the wake up word trigger? If yes, may I setup my private DialogFlow agent, replacing the existing one?

Best,
Lorenzo.

Support for emulator

Hi All,

I will be starting work on Temi robot app and the Initial development is only related to UI. So, I was just wondering if we have emulator support to test the UI part? If not, does UI developed for normal android tablets work well on Temi Tablet? Also, I wanted to know any restrictions put on custom android OS.

Thanks,
Kuldeep

About bluetooth questions

I try to use Bluetooth to connect temi for communication. I download the Bluetooth Terminal to test communication. It cannot connect temi but Bluetooth keyboard is successful. Have any limitation factor about Bluetooth?

issue with APK Install

There is nothing in the SDK steps that show how the apps can be loaded to the home screen

no response from asrlistener or nlplistener

Hey guys,

I used both listeners from the sample code, nothing happened...
everything else from sdk works fine, but only the these two listeners don't work.
Nothing changed on the sample code. It's impossible to receive the user spoken words..
Any idea or solutions?

Best regards
david

Temi ADB Connection Issue on temi version 115.64

I tries several networks to connect my android studio with temi but it is giving me this error on command "adb connect 172.18.20.152:5555"

"cannot connect to 172.18.20.152:5555: No connection could be made because the target machine actively refused it. (10061)"

HideTopBar in Kiosk Mode

When you apply hideTopBar in kiosk mode, the location did not appear at the top of the screen in the past, but now appears.

I want to not show.

And if you apply hideTopBar in kiosk mode, calling hey temi doesn't work, but now it reacts.

I wish no reacts.

What's wrong with the Temi software update?

WakeupListener and TtsListener clarification

I was wondering if there could be more clarification for the WakupListener and TtsListener objects. I'm trying to get temi to perform an action after hearing a phrase (e.g. I say "Tell me more" and temi responds "I would love to say more!"). I assume the wakeup word is similar to saying "Hey Temi" and the Ttslistener is what is activated after saying "Hey Temi" for out of the box software but I guess I'm confused about how to actually set these words and how to format the listeners properly so that Temi can perform actions accordingly (mainly following java documentation on oracle.com).

temiTroubleShooting

Ran with SDK on Temi

Ran the SDK on the Temi, none of the Action seems working

Save Locations->
TurnBy->
Follow Me->

08-14 17:34:09.138 10040-10040/com.robotemi.sdk.sample.china D/Robot: tiltBy(int, float) (degrees=70, speed=1.2)
08-14 17:34:09.622 10040-10040/com.robotemi.sdk.sample.china D/Robot: tiltBy(int, float) (degrees=70, speed=1.2)
08-14 17:34:09.821 10040-10040/com.robotemi.sdk.sample.china D/Robot: tiltBy(int, float) (degrees=70, speed=1.2)
08-14 17:34:10.050 10040-10040/com.robotemi.sdk.sample.china D/Robot: tiltBy(int, float) (degrees=70, speed=1.2)
08-14 17:34:10.416 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:10.586 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:10.815 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:11.009 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:11.266 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:11.580 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:12.150 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)
08-14 17:34:14.434 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (degrees=23, speed=5.3)
08-14 17:34:14.804 10040-10040/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (degrees=23, speed=5.3)
08-14 17:34:15.284 10040-10040/com.robotemi.sdk.sample.china D/Robot: skidJoy(float, float) (x=-1.0, y=1.0)
08-14 17:34:15.455 10040-10040/com.robotemi.sdk.sample.china D/Robot: skidJoy(float, float) (x=-1.0, y=1.0)
08-14 17:34:15.655 10040-10040/com.robotemi.sdk.sample.china D/Robot: skidJoy(float, float) (x=-1.0, y=1.0)
08-14 17:34:15.826 10040-10040/com.robotemi.sdk.sample.china D/Robot: skidJoy(float, float) (x=-1.0, y=1.0)
08-14 17:34:16.026 10040-10040/com.robotemi.sdk.sample.china D/Robot: skidJoy(float, float) (x=-1.0, y=1.0)
08-14 17:34:16.391 10040-10040/com.robotemi.sdk.sample.china D/Robot: beWithMe()
08-14 17:34:16.562 10040-10040/com.robotemi.sdk.sample.china D/Robot: beWithMe()
08-14 17:34:16.733 10040-10040/com.robotemi.sdk.sample.china D/Robot: beWithMe()
08-14 17:34:17.076 10040-10040/com.robotemi.sdk.sample.china D/Robot: getLocations()
08-14 17:34:17.140 10040-10081/com.robotemi.sdk.sample.china D/Surface: Surface::final mReqUsage=a00
08-14 17:34:17.140 10040-10081/com.robotemi.sdk.sample.china D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000

[Feature Request] Get Launcher Version

Many SDK features are dependent on the Launcher version.
But as far as I know, there is no way for an app to detect which version the robot has.

That is pretty unfortunate. Missing that information makes it impossible to use alternatives or inform the user about missing features.

Please implement a way to detect the Launcher version of the robot.

temi store download

Hi, we have uploaded our own application, AVATAR Robot for ZOOM in the temi store and has just been approved the other day.

However, we see about 30 downloads on our screen, but cannot seem to access the app from the temi itself.

Could you kindly let us know what the issue could be? Or is the temi marketplace still not public?

Auto-return back function

I know the Battery Listener. I am afraid your auto-return back function will run first. So I want to know the lowest battery energy and close the function. Let me easily to handle.
Thanks

Originally posted by @Lee827 in #50 (comment)

fetch map from ROBOX

Hi,
as the release note version #118
"Adding API support for map fetch and goto coordinates"
Where I can find the API and relate document or code?
thanks

Get SLAM map?

I have 2 questions...

  1. I'd like to get SLAM map and show this on my APP, how should I do? (also position of current Temi, points of locations been saved)
  2. Is that possible to set location on map directly without guild Temi to the location then saved?
    thanks for any answers

Handle any mode in sdk

I want to turn on/off kiosk mode, hard button mode, privacy mode, auto return, standby mode in SDK to control something. Would you add this function to SDK?

Thanks

HideTopBar in Kiosk Mode

When you apply hideTopBar in kiosk mode, the location did not appear at the top of the screen in the past, but now appears.

I want to not show.

And if you apply hideTopBar in kiosk mode, calling hey temi doesn't work, but now it reacts.

I wish no reacts.

What's wrong with the Temi software update?

turnBy calls

When calling turnBy(90,6.2), not getting any movement. I have been playing with skidJoy and calls to this function do move Temi.

Here is the log entry:

09-01 16:12:17.884 9741-9741/com.robotemi.sdk.sample.china D/Robot: turnBy(int, float) (azimuth=90, speed=6.2)

How many instances are running?

I am just beginning to design, build and test my first temi app, which is also my first Java app, and my first Android app. So, please be gentle!

I am confused about how many instances of my app are running. Each time I launch it from the Home screen, I get a message that I create within the default constructor, which is where I also start a background task for communications with my PC app. I can still communicate the PC when other temi apps (such as Youtube) are running. This is wonderful. But does that mean that I have have been creating multiple instances of my background task (a new one created each time I launch my app?) unless I manually control it?

Speech, tablet follow bar and tap on screen stops the movement

Hello all,

While Temi drives to a desired location, the default behavior of the robot stops the movement when I tap the Tablet Follow Bar, the “Going to XYZ” screen or I say “hey temi”.

May I change this behavior to have a customized confirmation screen, such as the options to “Continue” and “Abort”?

Best,
Lorenzo.

Potential issue in sample project gradle file

the application immediately gets the following error

Could not find method android() for arguments [build_8swd2bg3abnivrlw4mwkaa61z$_run_closure1@591a308a] on root project 'SAMPLE' of type org.gradle.api.Project.
Open File

Knows if Temi can't move, or has fallen.

There's a way we can know by code if Temi can't move, or has fallen?
Since his upper part is larger than his body, there's as slightly chance it may fall; so knowing this should make it easier to prevent, or help Temi.

Temi doesn't respond to Sample App

After pushing sample APK via Android Studio/ADB, the sample app loads successfully, and onClick events are registered, but the robot does not otherwise move or respond at all. We're not sure how to debug this, any assistance would be greatly appreciated! We tried building and pushing from two devices (Mac and Windows)

@ramisaban1

D/Robot: turnBy(int) (degrees=23)
D/Robot: tiltBy(int) (degrees=70)
I/InputMethodManager: lhk  showSoftInput()send soft input window show message !!!!!!!!!!
D/Robot: tiltBy(int) (degrees=70)
D/Robot: toggleWakeup() - disable = true
D/Robot: tiltBy(int) (degrees=70)

Camera to social network

Is there any way to lauch the camera app, or to use temi camera from the SDK to take a picture and send it directly to social media (instagram for example)?

Speech-To-text after the WakeupWord trigger

Hello all,

This issue partially covers the topic discussed into the issue #24, which is currently closed.

I have tried the sample application into this SDK and I have understood how to use the WakeupWordListener to activate the Speech Recognition of Temi. Therefore, I followed the tutorial posted into the issue #24 to setup an intent through the Temi's Settings page and implement my code into onNlpCompleted. This works pretty fine.

What I have wondered is why this tutorial involves a manual process and therefore I have few questions:

  1. may I use a programmatic approach to setup the intents?
  2. may I access the Speech-To-Text, which is available into onNlpCompleted, just after the wake up? I mean, I would like to have a channel which transcribes what the user says to the robot after the wake up. Is an API call available for accomplishing this goal?

Best,
Lorenzo.

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.