kingsmentor / mobilevisionbarcodescanner Goto Github PK
View Code? Open in Web Editor NEWBarcode Scanner powered by Mobile Vision Api
Home Page: http://belvi.xyz/posts/Mobile-Vision-Barcode-Scanner
License: MIT License
Barcode Scanner powered by Mobile Vision Api
Home Page: http://belvi.xyz/posts/Mobile-Vision-Barcode-Scanner
License: MIT License
Hi I just want to start saying how much I like this library and how helpful it's been to me.
Let's get down to business:
I'm attaching the barcodeCapture to my activity but the camera preview is showing an empty space the size of the actionBar and the statusBar combined at the bottom.
How can I make the camera preview full screen?
Hi,
I would like to ask if how I can customized the Rectangle in Scanner? Also, I would like to only display one rectangle even of there are many codes displayed.
I caught this on Android 7.
my xml layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<fragment
android:id="@+id/ActivityScanner_camera_frame"
android:name="com.google.android.gms.samples.vision.barcodereader.BarcodeCapture"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
app:gvb_auto_focus="true"
app:gvb_code_format="qr_code"
app:gvb_rect_colors="@array/rect_color" />
<android.support.v7.widget.Toolbar
android:id="@+id/ActivityScanner_toolbar"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize"
android:background="@android:color/transparent">
<ImageView
android:id="@+id/ActivityScanner_flash"
android:layout_width="20dp"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="16dp"
android:src="@drawable/flash" />
</android.support.v7.widget.Toolbar>
</RelativeLayout>
java code:
barcodeCapture = (BarcodeCapture) getSupportFragmentManager().findFragmentById(R.id.ActivityScanner_camera_frame);
barcodeCapture.setRetrieval(this);
@Override
public void onRetrieved(final Barcode barcode) { ...
java.lang.NoClassDefFoundError: com.google.android.gms.vision.barcode.internal.client.BarcodeDetectorOptions
I'm with gradle import like:
compile('com.github.KingsMentor:MobileVisionBarcodeScanner:v1.2') { transitive = true; }
Hello,
Thanks for your great work!
I don´t know why, but The QR-Code in Preview is not Scanned when i hold the Phone in the Code...
It just doesn´t do anything. I have written a Log in the retrieve method but there is no Log and no detection abviously.
What am I doing wrong?
Heres my Activity:
`public class WelcomeActivity extends AppCompatActivity implements BarcodeRetriever {
//Apache License for Scanner:
//http://www.apache.org/licenses/LICENSE-2.0
final int REQUEST_CAMERA_PERSMISSION = 1001;
RequestQueue queue;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch(requestCode){
case REQUEST_CAMERA_PERSMISSION:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
return;
}else{
}
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
queue = Volley.newRequestQueue(this);
BarcodeCapture barcodeCapture = (BarcodeCapture) getSupportFragmentManager().findFragmentById(R.id.barcode_fragment);
barcodeCapture.setRetrieval(WelcomeActivity.this);
}
@Override
public void onRetrieved(Barcode barcode) {
Log.d("simpleeeeeeeeeeee", "Barcode read: " + barcode.displayValue);
}
@Override
public void onRetrievedMultiple(Barcode barcode, List<BarcodeGraphic> list) {
Log.d("simpleeeeeeeeeeee", "multiple Barcode read: " + barcode.displayValue);
}
@Override
public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
}
@Override
public void onRetrievedFailed(String s) {
Log.i("faileddddd", "retrieve of barcode failed...");
}
}`
I have to use this feature because there shouldn't be any interface for the user and he/she only sees a little preview placed carefully on the WebView
.
I get bitmap from camera like this:
camera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// Convert to JPG
Camera.Size previewSize = camera.getParameters().getPreviewSize();
YuvImage yuvimage = new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 100, baos);
byte[] jdata = baos.toByteArray();
scanBarcode(BitmapFactory.decodeByteArray(jdata, 0, jdata.length));
}
});
And use bitmap:
BarcodeBitmapScanner.scanBitmap(view.getActContext(), bMap, Barcode.ALL_FORMATS, new BarcodeRetriever() {
@Override
public void onRetrieved(Barcode barcode) {
Log.e("kek", "onRetrieved: " + barcode.displayValue + "; " + barcode.rawValue);
}
@Override
public void onRetrievedMultiple(Barcode barcode, List<BarcodeGraphic> list) {
}
@Override
public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
Log.e("kek", "onBitmapScanned: " + sparseArray.toString());
}
@Override
public void onRetrievedFailed(String s) {
Log.e("kek", "onRetrievedFailed: " + s);
}
});
From this I'm getting only constant onBitmapScanned
callback with {-1498705798=com.google.android.gms.vision.barcode.Barcode@3f3a12cb}
this content. No other callbacks are invoked. Can you help me with this?
Hi,
I would like to set SINGLE_AUTO to the Barcode Scanner. How can I possible do that? I need to solve it asap.
I need to disable the multiple barcode detection based on this https://stackoverflow.com/questions/42112519/how-to-disable-multiple-barcode-detection-android-vision-api
I have implemented the library in an activity like you have shown us in sample. But When I click on or press the back button it gives a bit lag and then close the activity.
After adding the dependency, build gets generated. But when its deployed to device. Following error occurs. Is it due to some cyclic dependency available in multiple libs? Help needed slightly urgent....
02-20 04:54:26.502 6422-6422/com.softcell.gonogo.gonogohdbfs E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.softcell.gonogo.gonogohdbfs, PID: 6422
java.lang.NoSuchMethodError: No static method zzb(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzaa; or its super classes (declaration of 'com.google.android.gms.common.internal.zzaa' appears in /data/app/com.softcell.gonogo.gonogohdbfs-1/split_lib_dependencies_apk.apk:classes11.dex)
at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:4999)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4594)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534)
at android.app.ActivityThread.access$1500(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
These are my dependencies:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('src/main/libs/android-async-http-1.4.4.jar')
compile('com.github.afollestad.material-dialogs:core:0.8.5.7@aar') {
transitive = true
}
// for joda
// For realm with observable in jackson
//PDF library
// compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
transitive = true;
}
// Toast on network library error
//disk lru cache
// PDF library for Lollipop
compile files('libs/protobuf_2_4_1.jar')
compile files('libs/SamsungIndiaIdentity.jar')
compile files('libs/xom-1.2.10.jar')
// Testing dependency
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.0') {
exclude group: 'com.android.support', module: 'appcompat'
exclude group: 'com.android.support', module: 'support-v4'
exclude module: 'recyclerview-v7'
}
compile project(':gradle-git-version-master')
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
}
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.android.support:design:23.4.0'
compile 'uk.co.chrisjenx:calligraphy:2.1.0'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.mobsandgeeks:android-saripaar:2.0.3'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.fasterxml.jackson.core:jackson-core:2.7.3'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3'
compile 'joda-time:joda-time:2.9.2'
compile 'io.reactivex:rxjava:1.1.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.4'
compile 'com.github.nisrulz:easydeviceinfo:2.0.1'
compile 'com.github.johnkil.android-appmsg:appmsg:1.2.0'
compile 'cat.ereza:customactivityoncrash:1.5.0'
compile 'com.google.android.gms:play-services-analytics:9.0.0'
compile 'com.jakewharton:disklrucache:2.0.2'
compile 'es.voghdev.pdfviewpager:library:1.0.1'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha4'
compile('com.github.KingsMentor:MobileVisionBarcodeScanner:v1.2') { transitive = true; } // This is for barcode and QR code reader
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support:support-annotations:23.3.0'
}
Hi! This is a great project! It would be very useful to have a manual focus option. Thanks
First of all, after searching many websites and youtube videos, I'd finally got to know how to use that valueFormat option as nowhere it is mentioned in your library or in the official one or in any answer/question of StackOverflow. Even I got no answers on StackOverflow for the same.
But for now, four errors I've faced after handling many:
I don't need the control at the bottom. How should I remove it and make the camera preview in the full screen?
Hello Sir,
The library is very useful for me. But i am facing one issue while scanning barcode. In some devices barcode not getting scanned automatically. I have to click on camera to get that code. Samsung devices having this issue. Even for some MI devices Redmi 1S, MI 3.
I have given my code. Please check and let me know if i did something wrong.
Code as below :
barcodeCapture = (BarcodeCapture) getSupportFragmentManager().findFragmentById(R.id.barcode);
barcodeCapture.setRetrieval(this);
@Override
public void onRetrieved(final Barcode barcode) {
Log.d("Barcode", "Barcode read: " + barcode.displayValue);
runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(ScanBarcodeActivity.this)
.setTitle("code retrieved")
.setMessage(barcode.displayValue)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
arrayListBarcode.add(barcode.displayValue);
dialog.dismiss();
}
})
.setCancelable(false);
builder.show();
}
});
}
XML Code :
<fragment android:id="@+id/barcode" android:name="com.google.android.gms.samples.vision.barcodereader.BarcodeCapture" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" app:gvb_auto_focus="true" app:gvb_code_format="all_format" app:gvb_flash="true" app:gvb_rect_colors="@array/rect_color"/>
I am waiting for response. I have an urgent solution for it.
when retrive data from single qr code then I need to close the camera and show the retrievd data. How to achieve this?
Great work 👍
i have used your sample but unable to draw a rectangle while accessing QR and any other type of barcode while scanning.
i am using this app:gvb_rect_colors="@array/rect_color"
but no help.
Device using is Xiomi note 3 , android version 4.4;
The error is:
{ "errors" : [ { "status" : 409, "message" : "Failed to read POM for 'com/google/android/gms/play-services-basement-license/11.4.2/play-services-basement-license-11.4.2.pom': expected START_TAG or END_TAG not TEXT (position: TEXT seen ...</packaging>\\n \\ua0<l... @7:5) ." } ] }
Because of scanning not stop phone is getting heated
apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-P'
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.job.darasastudent"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//Enabling multidex support.
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:support-vector-drawable:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
//If your minSdkVersion is lower than 21
implementation 'com.android.support:multidex:1.0.3'
//firebase
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.2'
implementation 'com.google.firebase:firebase-firestore:17.0.4'
//location access
//implementation 'com.google.android.gms:play-services-location:15.0.1'
//qr scanner
implementation 'com.github.KingsMentor:MobileVisionBarcodeScanner:2.0.0'
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}
apply plugin: 'com.google.gms.google-services'
plugin com.google.gms.google-services is used by firebase and disabling will mean i can't use firebase ?
Thanks for this cool library.
Qr Code.pdf
I am checking it on some QR codes and its crashing without any message in log. Its working for some other codes. Attaching file for with QR codes that are not working. Please help.
Hi, I would like to change between two cameras to read qrcode.
Does this library allow you to read the code with the both cameras?
Thanks in advance!
Hello, Thanks for your great work!
barcodeCapture open camera and preview camera but not work retrieval on samsung device (J7 pro), but work on huawei or samsung j7!
code:
`barcodeCapture.setShowDrawRect(true);
barcodeCapture.setAllowEnterTransitionOverlap(true);
barcodeCapture.setShowDrawRect(true);
barcodeCapture.setSupportMultipleScan(false);
barcodeCapture.setTouchAsCallback(false);
barcodeCapture.shouldAutoFocus(true);
barcodeCapture.setBarcodeFormat(Barcode.ALL_FORMATS);
barcodeCapture.setCameraFacing(CameraSource.CAMERA_FACING_BACK);
barcodeCapture.setRetrieval(new BarcodeRetriever() {
@Override
public void onRetrieved(Barcode barcode) {
_barcode_value = barcode.displayValue;
_func_send_barcode();
}
@Override
public void onRetrievedMultiple(Barcode closetToClick, List<BarcodeGraphic> barcode) {
_barcode_value = barcode.get(0).getBarcode().displayValue;
_func_send_barcode();
}
@Override
public void onBitmapScanned(SparseArray<Barcode> sparseArray) {
}
@Override
public void onRetrievedFailed(String reason) {
}
@Override
public void onPermissionRequestDenied() {
}
});
barcodeCapture.refresh();`
Hi,
Thanks for the library, it works great. Why do we need to touch the screen in order to get result from multiple barcode scanning? is there a way to get them automatically like if we have only one barcode?
Best regards....
Hi!
I'm trying to use your library (it's good).
But I'm having the following error:
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/common/api/zza;
This are my dependecies:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:support-v4:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:design:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.roughike:bottom-bar:2.0.2'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
compile group: 'com.google.zxing', name: 'core', version: '2.0'
compile 'com.google.code.gson:gson:2.4'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.google.firebase:firebase-messaging:9.6.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile('com.github.KingsMentor:MobileVisionBarcodeScanner:v1.2') { transitive = true; }
apply plugin: 'com.google.gms.google-services'
testCompile 'junit:junit:4.12'
}
Hi,
I was trying to use your library in our project but got this error when I open the MainActivity that holds the fragment. I hope you can help me as soon as possible.
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.samples.vision.barcodereader.BarcodeCapture.setRetrieval(xyz.belvi.mobilevisionbarcodescanner.BarcodeRetriever)' on a null object reference at ca.easyreg.easyexhibitor.fragments.BarcodeScanner.onCreateView(BarcodeScanner.java:108)
Thanks in Advance!
J
Hi
I want to add support for only EAN-13 and EAN-8
how can I achieve this?
public void flashlight(View view){
Boolean flashIsOn = barcodeCapture.isShowFlash();
if(!flashIsOn){
barcodeCapture.setShowFlash(true);
}else{
barcodeCapture.setShowFlash(false);
}
barcodeCapture.refresh();
}
I'm implementing a button inside the view that when clicked, checks the flash status and if off, turns it off and if on, turns it off.
The turning ON part is ok, but turning OFF doesn't work.
Can you help me?
So now if I import MobileVisionBarcodeScanner dependency to project it will crash at runtime because
compile "com.google.android.gms:play-services-vision:9.6.1"
is missing
There seems to be some RuntimeException caused by this line. Fix possible?
Please update the dependency of RxPermission to the latest version, as if conflicts with the old version in package.
Thank you.
I wonder why even googlesamples
use old deprecated camera api...
However, contributing to their samples is a bit useless in my opinion (I can be mistaken of course), that's why I suggest implementing Camera2
API to your lib.
update compile to implementation
Hi, when I leave the mobile on the table, and the camera can't detect anything (black screen), it sometimes read an imaginary barcode, randomly.
java.lang.ClassCastException: com.edwardvanraak.materialbarcodescanner.CameraSourcePreview cannot be cast to com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview
I'm not sure on what to do.. I used com.google.zxing before importing this library. I tried this lib, everything seemed to work. After I removed the google lib I started receiving this error and I'm not sure how I can get rid of it. Any help is appreciated.
It is conflicting with my location google play services and ml firebase version as version 11.0.4 is depreciated so please update the version.
I imported your example on my project (beside the fact that few methods from the example are not available in the latest version from gradle), and the logs are spammed with this error:
E/OpenCameraSource: Exception thrown from receiver.
java.lang.IllegalStateException: Detector processor must first be set with setProcessor in order to receive detection results.
at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source)
at com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1222)
at java.lang.Thread.run(Thread.java:762)
E/OpenCameraSource: Exception thrown from receiver.
java.lang.IllegalStateException: Detector processor must first be set with setProcessor in order to receive detection results.
at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source)
at com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1222)
at java.lang.Thread.run(Thread.java:762)
E/OpenCameraSource: Exception thrown from receiver.
java.lang.IllegalStateException: Detector processor must first be set with setProcessor in order to receive detection results.
at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source)
at com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1222)
at java.lang.Thread.run(Thread.java:762)
Hi
I'm using your library.I have one problem.First time i can't open camera in marshmallow.I clicked Allow but i can't open camera,Second time camera working perfect
when I call stopScanning function, i have this error many times
OpenCameraSource: Exception thrown from receiver. java.lang.IllegalStateException: Detector processor must first be set with setProcessor in order to receive detection results. at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source) at com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1222) at java.lang.Thread.run(Thread.java:818)
I used the last version 2.0.0
I have used your library in one of my project, the apps is crashing in some devices like samsung galaxy S7, S8 ,edge,
Here is the log
#00 pc 000000000001bf44 /data/data/com.google.android.gms/app_vision/barcode/libs/arm64-v8a/libbarhopper.so
#01 pc 000000000001110c /data/data/com.google.android.gms/app_vision/barcode/libs/arm64-v8a/libbarhopper.so
#02 pc 0000000000005bf4 /data/data/com.google.android.gms/app_vision/barcode/libs/arm64-v8a/libbarhopper.so
#03 pc 00000000000076f4 /data/data/com.google.android.gms/app_vision/barcode/libs/arm64-v8a/libbarhopper.so
#04 pc 0000000000003624 /data/data/com.google.android.gms/app_vision/barcode/libs/arm64-v8a/libbarhopper.so
#05 pc 0000000000004c8c /data/data/com.google.android.gms/app_vision/barcode/libs/arm64-v8a/libbarhopper.so
#06 pc 00000000003bb074 /data/user_de/0/com.google.android.gms/app_chimera/m/00000035/oat/arm64/DynamiteModulesA_GmsCore_prodmnc_alldpi_release.odex
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.