Coder Social home page Coder Social logo

xamarin / monodroid-samples Goto Github PK

View Code? Open in Web Editor NEW
2.2K 2.2K 4.1K 336.24 MB

A collection of Xamarin.Android sample projects.

Home Page: http://android.xamarin.com

C# 98.28% Shell 0.05% HTML 0.20% Java 0.03% Ruby 0.06% Makefile 0.01% C 1.16% GLSL 0.12% CSS 0.02% JavaScript 0.03% PowerShell 0.03% AIDL 0.01%

monodroid-samples's Introduction

MonoDroid (Xamarin.Android) samples

NOTE: see the dotnet branch for a subset of samples that have been ported to .NET 6.

This repository contains Mono for Android samples, showing usage of various Android API wrappers from C#. Visit the Android Sample Gallery to download individual samples.

License

The Apache License 2.0 applies to all samples in this repository.

Copyright 2011 Xamarin 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.

Porting to NET6

When porting a legacy sample to NET6+, please make sure to preserve as much history of the original sample as possible. Some samples have their project, source and resource files in the same directory where the readme file, screenshot folder and other files not directly related to the sample code reside. Since NET6+ defaults to importing all the files in the project directory as if they were part of the project, the application code must first be moved to a subdirectory (with the exception of the .sln file).

New subdirectory should use the same name as the solution file, without the .sln extension. After creating it first move all the relevant files and directories (source code, project file(s), the Properties and Resources directories etc), using the git mv command to the newly created directory, modify the .sln file to update project file path(s) and commit these changes. This ensures that further changes will preserve commit history.

Now the sample is ready for porting. After creating new project file (using dotnet new android -n SampleName) in a separate directory, copy any necessary package and project references from the old project, updating them as needed and after that replace the old project file with the new one.

A handful of useful tips (copied from the dotnet branch's README in this repository):

  1. If the root namespace doesn't match the project name, to get the existing code to compile, you may need:
<RootNamespace>Xamarin.AidlDemo</RootNamespace>
  1. Update any dependencies, NuGet packages, etc.
  2. Remove android:versionCode, android:versionName, package, , and <application label="". These are defined in the .csproj file.
  3. Remove all unused using statements, since we now have ImplicitUsings=enable.
  4. Fix all namespace declarations to use C# 10 file-scoped namespaces.
  5. Build. Fix any warnings related to nullable reference types (Nullable=enable).
  6. Run the app and ensure the sample still works.

Another collection of tips can be found here

Contributing

Before adding a sample to the repository, please run either install-hook.bat or install-hook.sh depending on whether you're on Windows or a POSIX system. This will install a Git hook that runs the Xamarin code sample validator before a commit, to ensure that all samples are good to go.

Samples Submission Guidelines

Galleries

We love samples! Application samples show off our platform and provide a great way for people to learn our stuff. And we even promote them as a first-class feature of the docs site. You can find the sample galleries here:

Sample GitHub Repositories

These sample galleries are populated by samples in these GitHub repos:

The mobile-samples repository is for samples that are cross-platform. The mac-ios-samples repository is for samples that are Mac/iOS only.

Sample Requirements

We welcome sample submissions, please start by creating an issue with your proposal.

Because the sample galleries are powered by the github sample repos, each sample needs to have the following things:

  • Screenshots - a folder called Screenshots that has at least one screen shot of the sample on each platform (preferably a screen shot for every page or every major piece of functionality). For an example of this, see android-p/AndroidPMiniDemo.

  • Readme - a README.md file that explains the sample, and contains metadata to help customers find it. For an example of this, see android-p/AndroidPMiniDemo. The README file should begin with a YAML header (delimited by ---) with the following keys/values:

    • name - must begin with Xamarin.Android -

    • description - brief description of the sample (< 150 chars) that appears in the sample code browser search

    • page_type - must be the string sample.

    • languages - coding language/s used in the sample, such as: csharp, fsharp, vb, java

    • products: should be xamarin for every sample in this repo

    • urlFragment: although this can be auto-generated, please supply an all-lowercase value that represents the sample's path in this repo, except directory separators are replaced with dashes (-) and no other punctuation.

    Here is a working example from android-p/AndroidPMiniDemo README raw view.

    ---
    name: Xamarin.Android - Android P Mini Demo
    description: "Demonstrates new display cutout and image notification features (Android Pie)"
    page_type: sample
    languages:
    - csharp
    products:
    - xamarin
    urlFragment: android-p-androidpminidemo
    ---
    # Heading 1
    
    rest of README goes here, including screenshot images and requirements/instructions to get it running

    NOTE: This must be valid YAML, so some characters in the name or description will require the entire string to be surrounded by " or ' quotes.

  • Buildable solution and .csproj file - the project must build and have the appropriate project scaffolding (solution + .csproj files).

This approach ensures that all samples integrate with the Microsoft sample code browser.

A good example of this stuff is here in the Android Pie sample

For a cross-platform sample, please see: https://github.com/xamarin/mobile-samples/tree/master/Tasky

GitHub Integration

We integrate tightly with Git to make sure we always provide working samples to our customers. This is achieved through a pre-commit hook that runs before your commit goes through, as well as a post-receive hook on GitHub's end that notifies our samples gallery server when changes go through.

To you, as a sample committer, this means that before you push to the repos, you should run the "install-hook.bat" or "install-hook.sh" (depending on whether you're on Windows or macOS/Linux, respectively). These will install the Git pre-commit hook. Now, whenever you try to make a Git commit, all samples in the repo will be validated. If any sample fails to validate, the commit is aborted; otherwise, your commit goes through and you can go ahead and push.

This strict approach is put in place to ensure that the samples we present to our customers are always in a good state, and to ensure that all samples integrate correctly with the sample gallery (README.md, Metadata.xml, etc). Note that the master branch of each sample repo is what we present to our customers for our stable releases, so they must always Just Work.

Should you wish to invoke validation of samples manually, simply run "validate.windows" or "validate.posix" (again, Windows vs macOS/Linux, respectively). These must be run from a Bash shell (i.e. a terminal on macOS/Linux or the Git Bash terminal on Windows).

If you have any questions, don't hesitate to ask!

monodroid-samples's People

Contributors

atsushieno avatar benohalloran avatar bryancostanich avatar cartblanche avatar chrisntr avatar conceptdev avatar dellis1972 avatar dylankelly5 avatar fullmetaltac avatar garuma avatar gonzalonm avatar grendello avatar jamesmontemagno avatar joelmartinez avatar johnpilczak avatar jonpryor avatar jpobst avatar mikebluestein avatar mjh4 avatar olegoid avatar pjbeaman avatar pjcollins avatar radekdoulik avatar radical avatar redth avatar shana avatar timeyoutakeit avatar topgenorth avatar vchelaru avatar vyedin 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  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

monodroid-samples's Issues

Java.Lang.NoClassDefFoundError: com.facebook.android.R$drawable

If you reference Mono.Facebook from a Mono for Android Application that doesn't have the package name com.facebook.android, then you get the following error:

Unhandled Exception:

Java.Lang.NoClassDefFoundError: com.facebook.android.R$drawable

Please help.

Thanks,
Lee.

SPenSdkBinding and SPen SDK 2.3

I pulled the sample to create a monodroid-binding for the Samsung SPen SDK, but it doesn't work with the SDK 2.3.

Attached you'll find a snippet of the error messages. Anything I don't see here? I added the libspen23.jar in "Jars" as 'inputjar'.

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Bindings.targets: Error: Tool exited with code: 1. Output: java.lang.NoClassDefFoundError: android/view/View$OnHoverListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at jar2xml.JavaArchive.getPackages(JavaArchive.java:86)
at jar2xml.JavaArchive.getPackages(JavaArchive.java:64)
at jar2xml.Start.main(Start.java:118)
Caused by: java.lang.ClassNotFoundException: android.view.View$OnHoverListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 14 more

Exception with Google Play service reference

Hi, We are facing an issue while trying to add the Xamarin.GooglePlayservices.Location.dll in geofence sample project mentioned in the below link.
https://github.com/xamarin/monodroid-samples/tree/master/google-services/Location/Geofencing

When we build the project , showing the below error message for Location Services dll.

error: package com.google.android.gms.maps.StreetViewPanorama does not exist
com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaLongClickListener

error: package com.google.android.gms.maps.StreetViewPanorama does not exist
com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaClickListener

error: package com.google.android.gms.maps.StreetViewPanorama does not exist
com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaChangeListener

error: package com.google.android.gms.maps.StreetViewPanorama does not exist
com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener

error: package com.google.android.gms.maps.model does not exist
public void onStreetViewPanoramaLongClick (com.google.android.gms.maps.model.StreetViewPanoramaOrientation p0)

error: package com.google.android.gms.maps.model does not exist
public void onStreetViewPanoramaClick (com.google.android.gms.maps.model.StreetViewPanoramaOrientation p0)

error: package com.google.android.gms.maps.model does not exist
public void onStreetViewPanoramaChange (com.google.android.gms.maps.model.StreetViewPanoramaLocation p0)

package com.google.android.gms.maps.model does not exist
public void onStreetViewPanoramaCameraChange (com.google.android.gms.maps.model.StreetViewPanoramaCamera p0)

error: package com.google.android.gms.maps.model does not exist
public void onMarkerDragStart (com.google.android.gms.maps.model.Marker p0)

error: package com.google.android.gms.maps.model does not exist
public void onMarkerDragEnd (com.google.android.gms.maps.model.Marker p0)

error: package com.google.android.gms.maps.model does not exist
public void onMarkerDrag (com.google.android.gms.maps.model.Marker p0)

error: package com.google.android.gms.maps.model does not exist
public void onMapLongClick (com.google.android.gms.maps.model.LatLng p0)

error: package com.google.android.gms.maps.model does not exist
public void onMapClick (com.google.android.gms.maps.model.LatLng p0)
error: package com.google.android.gms.maps.model does not exist
public void onInfoWindowClick
error: package com.google.android.gms.maps.model does not exist
public void onIndoorLevelActivated
error: package com.google.android.gms.maps.model does not exist
public void onCameraChange (com.google.android.gms.maps.model.CameraPosition p0)

error: package com.google.android.gms.maps.model does not exist
public boolean onMarkerClick (com.google.android.gms.maps.model.Marker p0)

error: package com.google.android.gms.maps.model does not exist
private native void n_onStreetViewPanoramaLongClick (com.google.android.gms.maps.model.StreetViewPanoramaOrientation p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onStreetViewPanoramaClick (com.google.android.gms.maps.model.StreetViewPanoramaOrientation p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onStreetViewPanoramaChange (com.google.android.gms.maps.model.StreetViewPanoramaLocation p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onStreetViewPanoramaCameraChange (com.google.android.gms.maps.model.StreetViewPanoramaCamera p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onMarkerDragStart (com.google.android.gms.maps.model.Marker p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onMarkerDragEnd (com.google.android.gms.maps.model.Marker p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onMarkerDrag (com.google.android.gms.maps.model.Marker p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onMapLongClick (com.google.android.gms.maps.model.LatLng p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onMapClick (com.google.android.gms.maps.model.LatLng p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onInfoWindowClick (com.google.android.gms.maps.model.Marker p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onIndoorLevelActivated (com.google.android.gms.maps.model.IndoorBuilding p0);

error: package com.google.android.gms.maps.model does not exist
private native void n_onCameraChange (com.google.android.gms.maps.model.CameraPosition p0);

error: package com.google.android.gms.maps.model does not exist
private native boolean n_onMarkerClick (com.google.android.gms.maps.model.Marker p0);

error: package com.google.android.gms.maps.LocationSource does not exist
com.google.android.gms.maps.LocationSource.OnLocationChangedListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnMyLocationChangeListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnMarkerDragListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnMarkerClickListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnMapLongClickListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnMapClickListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnIndoorStateChangeListener

error: package com.google.android.gms.maps.GoogleMap does not exist
com.google.android.gms.maps.GoogleMap.OnCameraChangeListener

GCM Notifications

Hi,

I've tried your sample on Xamarin, and slow followed instructions how to configure gcm service on google. I got my server APIKEY and also the Regid from my device. Im using your server to send a push notification but im having problem receiving these notifications. The statuscode from the server after sending e push notification is on OK but stil not receiving pushnotifications. I spend a whole day trying to get this to work but stil no results. Can u please help me?

CalendarDemo

I downloaded, compiled and installed the CalendarDemo on my Android and when I run the program and look at the Events I have in my calendars all the Event Days are off my 1.

One of the Events is Dec 6th 2013 and it shows it as Dec 5th 2013
Another is Jan 28th 2014 and it shows it as Jan 27th 2014.

Looking at the code I have to assume that ".dtstart" is not being read right?

Is this a problem I can fix?

BobVal

ActionBarViewPager sample throws exception when orientation is changed

While running the ActionBarViewPager (HelloSwipeViewWithTabs) sample an exception is thrown when the orientation is changed.

The issue occurs base.OnCreate(bundle); is executed when Activity1 is recreated due to the orientation change:

using System;
using System.Collections.Generic;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Support.V4.View;
using Android.Support.V4.App;

namespace HelloSwipeViewWithTabs
{
    [Activity(Label = "HelloSwipeViewWithTabs", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : FragmentActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
            ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;

            var pager = FindViewById<ViewPager>(Resource.Id.pager);
            var adaptor = new GenericFragmentPagerAdaptor(SupportFragmentManager);

            adaptor.AddFragmentView((i, v, b) =>
            {
                var view = i.Inflate(Resource.Layout.tab, v, false);
                var sampleTextView = view.FindViewById<TextView>(Resource.Id.textView1);
                sampleTextView.Text = "This is content";
                return view;
            }
            );

            adaptor.AddFragmentView((i, v, b) =>
            {
                var view = i.Inflate(Resource.Layout.tab, v, false);
                var sampleTextView = view.FindViewById<TextView>(Resource.Id.textView1);
                sampleTextView.Text = "This is more content";
                return view;
            }
            );

            pager.Adapter = adaptor;
            pager.SetOnPageChangeListener(new ViewPageListenerForActionBar(ActionBar));

            ActionBar.AddTab(pager.GetViewPageTab(ActionBar, "Tab1"));
            ActionBar.AddTab(pager.GetViewPageTab(ActionBar, "Tab2"));
        }
    }
}

I've based a portion of an app I'm currently developing on this sample and although my app doesn't require landscape orientation, I'd still like to understand why this is throwing and the proper way to avoid it...

Need to add TimeZone support now

Here is what I had to add to my code as EventStart and End times need timezone support:

            ContentValues cv = new ContentValues();
            cv.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, "UTC");
            cv.Put(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "UTC");

Missing precompiled 4.4.0 jar?

I am having a problem replacing my 4.2.0 version with the 4.4.0 component version and was hoping to update from here.

Shouldn't the update to 4.4.0 have a new jar file (ActionBarSherlock-4.4.0.zip)?

CardView samples no longer build

Since your last release of Xamarin, samples using the CardView library no longer build :(. I have the latest Xamarin and Android SDK software stack. What's up?

Share text in facebook, twitter, etc.

I do that

public override bool OnCreateOptionsMenu(IMenu menu)
{
     SupportMenuInflater.Inflate(Resource.Menu.share_action_provider, menu);

    Com.Actionbarsherlock.View.IMenuItem shareMenu = menu.FindItem(Resource.Id.menu_item_share_action_provider_action_bar);
    Com.Actionbarsherlock.Widget.ShareActionProvider shareAction = (Com.Actionbarsherlock.Widget.ShareActionProvider)shareMenu.ActionProvider;
    shareAction.SetShareIntent(createShareIntent());

   return true;
}

when I execute "SetShareIntent", I received a null object.

Anybody can help me.

BluetoothLeGatt

In BluetoothLeGatt/DeviceControlActivity.cs, should use "&" instead of "|" when operating on a GattProperty to determine if property is "GattProperty.Read", etc.

someone that works support4?

I've been testing with tabspager but does not work, I have this error:

"Unable to find the default constructor on type Support.LoaderCursor Support"

error XA0009: Error while loading assembly: /Users/Projects/monodroid-samples/FragmentsWalkthrough/SupportLibFragments/obj/Release/android/assets/supportlibfragmentssample.dll

I have been trying to build the Support Lib Fragments inside the FragmentWalkthrough on a Mac. I have done the following.

  1. Added a new android-support-v4.jar file to the SupportLib folder.
  2. Set the build action of the new JAR as Android Java Library.
  3. Added the launcher images that were missing.
  4. I got this error.

Warnings:

/Users/developer/Projects/monodroid-samples/FragmentsWalkthrough/SupportLibFragments/SupportLibFragments.csproj (Build) ->
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets (_ResolveSatellitePaths target) ->

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:  warning : Reference 'Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065' not resolved
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:  warning : Reference 'Mono.Android.Support.v4, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065' not resolved
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:  warning : Reference 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' not resolved

Errors:

/Users/developer/Projects/monodroid-samples/FragmentsWalkthrough/SupportLibFragments/SupportLibFragments.csproj (Build) ->
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets (_GenerateJavaStubs target) ->

: error XA0009: Error while loading assembly: /Users/developer/Projects/monodroid-samples/FragmentsWalkthrough/SupportLibFragments/obj/Release/android/assets/supportlibfragmentssample.dll

 3 Warning(s)
 1 Error(s)

I tried the same thing on windows and I was able to build to a phone. I have also had some problem with my phones ABI, so I went into the Project Settings and I added the (armeabi-v7a).

Deploying in Debug mode works on mac with the same configuration.
Differences between release and debug build

Linker was set to

  • link sdk's only in release mode
  • dont link in Debug mode.

General

  • Enable optimzations was selected for release mode

.

.

LeaderboardsAndAchievementsDemo: doesn't sign out on SignOut()

There is a sign-out button on the LeaderBoards page and if try to sign out by tapping this button the GoogleApiClient doesn't disconnect - it just goes to "signed out" state.

Here is the fix for GameHelper.cs to perform complete sigh out:

        const int RESULT_RECONNECT_REQUIRED = 10001;

        public void OnActivityResult (int requestCode, Result resultCode, Intent data) {
            if (requestCode == RC_RESOLVE) {
                if (resultCode == Result.Ok) {
                    Start ();
                } else {
                    if (OnSignInFailed != null)
                        OnSignInFailed (this, EventArgs.Empty);
                }
            } else if ((int)resultCode == RESULT_RECONNECT_REQUIRED) {
                SignOut (true);
            }
        }

        public void SignOut(bool reconnectingRequired = false) {
            SignedOut = true;
            if (_googleApiClient.IsConnected) {
                if (!reconnectingRequired) {
                    GamesClass.SignOut (_googleApiClient);
                }
                Stop ();
                using (var settings = this._activity.GetSharedPreferences ("googleplayservicessettings", FileCreationMode.Private)) {
                    using (var e = settings.Edit ()) {
                        e.PutString ("playerid", String.Empty);
                        e.Commit ();
                    }
                }
                _googleApiClient.Dispose ();
                _googleApiClient = null;
                if (OnSignedOut != null)
                    OnSignedOut (this, EventArgs.Empty);
            }
        }

Add Mono.SlidingMenu to my project

I add the project Mono.SlidingMenu to my solution and when I add the reference to my project I allways have this error:

C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(886,3): error MSB6006: "java" exited with code 1.

Anybody have the same problem?

Xamarin.Facebook.dll

Is anyone able to send me the compiled Xamarin.Facebook.dll?

My current mono android version is 4.2.3 and I have a lot of troubles building it properly.

Don't know why the Com.Facebookbinding.Model is missing after build.

Xamarin.Android on Linux

Hi,

I've already using Ubuntu 14.04 LTS Linux system. My question is: is there any option to use Xamarin Android libraries on this Linux operational system?

I know that Xamarin team don't want to make Xamarin IDE for Linux (prove I found here: https://forums.xamarin.com/discussion/1599/xamarin-studio-in-linux), but is it possible to use these Android libraries in Mono Develop? I've already heard about Mono for Android, but according to this page:
https://developer.xamarin.com/releases/android/mono_for_android_4/mono_for_android_4.4/
I see that Monodroid has now version 4.4, where Xamarin.Android has the newest version as 6.0. Is Mono for Android up-to-date or just an old, already deprecated project.

Could you explain me clearly how nowadays does situation with Xamarin.Android for Linux. Monodroid and Xamarin IDE for Linux looks like?

Thanks in advance,
Piotr

line color problem with LinedEditText.cs

here is my code for Line edit text, but I have faced problem with the line color.
line colors are not same, when i drew it in edittext..

                public class LineEditText : EditText
                {
                    private Rect rect;
                    private Paint paint;
    public LineEditText(Context context, IAttributeSet attrs) : base(context, attrs){

        rect = new Rect ();
        paint = new Paint ();
        paint.SetStyle (Android.Graphics.Paint.Style.Stroke);
        paint.Color = Color.LightGray; 

    }


    protected override void OnDraw(Canvas canvas) {

        int height = Height;
        int lHeight = LineHeight;
        // the number of line
        int count = height / lHeight;
        if (LineCount > count) {
            // for long text with scrolling
            count = LineCount;
        }

        // first line
        int baseline = GetLineBounds(0, rect);

        // draw the remaining lines.
        for (int i = 0; i < count; i++) {
            canvas.DrawLine(rect.Left, baseline + 1, rect.Right, baseline + 1, paint);
            // next line
            baseline += LineHeight;
        }
        base.OnDraw(canvas);
    }


    }

Drawer sample

Is it possible to Get a sample with the drawer from the latest support libary?

Set shared checkable behavior across all groups in NavigationView in Cheesesquare

In the Cheesesquare sample only items in the first group is checked in the NavigationView. I want to make items in second group checked too.

something like this:
http://howtobox.org/how-to-set-shared-checkable-behavior-across-all-groups-in-navigationview/

IMenu m = navigationView.Menu;

        for (int i = 0; i <= m.Size () - 1; i++) {
            IMenuItem mi = m.GetItem (i);
            if (!(mi == e.MenuItem))
            {
                mi.SetCheckable (false);
            }
        }

        e.MenuItem.SetCheckable (true);
        e.MenuItem.SetChecked (true);

does this make sense?

Can you add this this too the sample?

[Support4] Wrong namespace in fragment class identifier

File: Support4/Support4/Resources/layout-land/fragment_layout_support.xml

This code crashes the Layout example on tablets:

<fragment class="com.example.android.supportv4.app.FragmentLayoutSupport$TitlesFragment"
            android:id="@+id/titles" android:layout_weight="1"
            android:layout_width="0px" android:layout_height="match_parent" />

Should be:

<fragment class="support4.FragmentLayoutSupport_TitlesFragment"
            android:id="@+id/titles" android:layout_weight="1"
            android:layout_width="0px" android:layout_height="match_parent" />

VoiceRecognition demo throws java.lang.NullPointerException

Running the VoiceRecognition sample in ApiDemo throws the following error both in an emulator and on a phone.

[monodroid-gc] GREF GC Threshold: 46800
[MonoDroid] Xamarin/Android Trial Mode Active
[Adreno200-EGLSUB] ConfigWindowMatch:2087: Format RGBA_8888.
[] s3dReadConfigFile:75: Can't open file for reading
[] s3dReadConfigFile:75: Can't open file for reading
[AbsListView] Get MotionRecognitionManager
[Adreno200-EGLSUB] ConfigWindowMatch:2087: Format RGBA_8888.
[AbsListView] Get MotionRecognitionManager
[Adreno200-EGLSUB] ConfigWindowMatch:2087: Format RGBA_8888.
[ResourceType] getEntry failing because entryIndex 129 is beyond type entryCount 4
[AbsListView] Get MotionRecognitionManager
[VoiceRecognition] Sending broadcast
[MonoDroid] UNHANDLED EXCEPTION: Java.Lang.NullPointerException: Exception of type 'Java.Lang.NullPointerException' was thrown.
[MonoDroid] at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (intptr,intptr,intptr,Android.Runtime.JValue[]) <0x00088>
[MonoDroid] at Android.Content.ContextWrapper.SendOrderedBroadcast (Android.Content.Intent,string,Android.Content.BroadcastReceiver,Android.OS.Handler,Android.App.Result,string,Android.OS.Bundle) <0x006ab>
[MonoDroid] at MonoDroid.ApiDemo.VoiceRecognition.RefreshVoiceSettings () <0x00087>
[MonoDroid] at MonoDroid.ApiDemo.VoiceRecognition.OnCreate (Android.OS.Bundle) <0x0022b>
[MonoDroid] at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <0x00057>
[MonoDroid] at (wrapper dynamic-method) object.4ef9ec1f-9181-40b1-8740-b5edc67b0142 (intptr,intptr,intptr) <0x00043>
[MonoDroid]
[MonoDroid] --- End of managed exception stack trace ---
[MonoDroid] java.lang.NullPointerException
[MonoDroid] at android.app.ContextImpl.sendOrderedBroadcast(ContextImpl.java:1125)
[MonoDroid] at android.content.ContextWrapper.sendOrderedBroadcast(ContextWrapper.java:344)
[MonoDroid] at monodroid.apidemo.VoiceRecognition.n_onCreate(Native Method)
[MonoDroid] at monodroid.apidemo.VoiceRecognition.onCreate(VoiceRecognition.java:29)
[MonoDroid] at android.app.Activity.performCreate(Activity.java:5179)
[MonoDroid] at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
[MonoDroid] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
[MonoDroid] at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
[MonoDroid] at android.app.ActivityThread.access$700(ActivityThread.java:143)
[MonoDroid] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
[MonoDroid] at android.os.Handler.dispatchMessage(Handler.java:99)
[MonoDroid] at android.os.Looper.loop(Looper.java:137)
[MonoDroid] at android.app.ActivityThread.main(ActivityThread.java:4950)
[MonoDroid] at java.lang.reflect.Method.invokeNative(Native Method)
[MonoDroid] at java.lang.reflect.Method.invoke(Method.java:511)
[MonoDroid] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
[MonoDroid] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
[MonoDroid] at dalvik.system.NativeStart.main(Native Method)
[mono]
[mono] Unhandled Exception:
[mono] Java.Lang.NullPointerException: Exception of type 'Java.Lang.NullPointerException' was thrown.
[mono] at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (intptr,intptr,intptr,Android.Runtime.JValue[]) <0x00088>
[mono] at Android.Content.ContextWrapper.SendOrderedBroadcast (Android.Content.Intent,string,Android.Content.BroadcastReceiver,Android.OS.Handler,Android.App.Result,string,Android.OS.Bundle) <0x006ab>
[mono] at MonoDroid.ApiDemo.VoiceRecognition.RefreshVoiceSettings () <0x00087>
[mono] at MonoDroid.ApiDemo.VoiceRecognition.OnCreate (Android.OS.Bundle) <0x0022b>
[mono] at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <0x00057>
[mono] at (wrapper dynamic-method) object.4ef9ec1f-9181-40b1-8740-b5edc67b0142 (intptr,intptr,intptr) <0x00043>
[mono]
[mono] --- End of managed exception stack trace ---
[mono] java.lang.NullPointerException
[mono] at android.app.ContextImpl.sendOrderedBroadcast(ContextImpl.java:1125)
[mono] at android.content.ContextWrapper.sendOrderedBroadcast(ContextWrapper.java:344)
[mono] at monodroid.apidemo.VoiceRe
[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.NullPointerException: Exception of type 'Java.Lang.NullPointerException' was thrown.
[mono-rt] at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (intptr,intptr,intptr,Android.Runtime.JValue[]) <0x00088>
[mono-rt] at Android.Content.ContextWrapper.SendOrderedBroadcast (Android.Content.Intent,string,Android.Content.BroadcastReceiver,Android.OS.Handler,Android.App.Result,string,Android.OS.Bundle) <0x006ab>
[mono-rt] at MonoDroid.ApiDemo.VoiceRecognition.RefreshVoiceSettings () <0x00087>
[mono-rt] at MonoDroid.ApiDemo.VoiceRecognition.OnCreate (Android.OS.Bundle) <0x0022b>
[mono-rt] at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <0x00057>
[mono-rt] at (wrapper dynamic-method) object.4ef9ec1f-9181-40b1-8740-b5edc67b0142 (intptr,intptr,intptr) <0x00043>
[mono-rt]
[mono-rt] --- End of managed exception stack trace ---
[mono-rt] java.lang.NullPointerException
[mono-rt] at android.app.ContextImpl.sendOrderedBroadcast(ContextImpl.java:1125)
[mono-rt] at android.content.ContextWrapper.sendOrderedBroadcast(ContextWrapper.java:344)
[mono-rt] at monodroid.ap

ActionBarSherlock Themes in SlidingMenu

How can I change style of the ActionBar in this example?
I've tired this:

@style/Widget.Styled.ActionBar @style/Widget.Styled.ActionBar @drawable/bg_striped @drawable/bg_striped @drawable/bg_striped_split @drawable/bg_striped_split

but it not see parent from Sherlock.

Facebook Binding Sample "Argument applicationId cannot be null"

I added the facebook binding to my project and attempted to follow the facebook sdk instructions for setting up a session based login activity.

When the Com.Faccebook.UiLifecycleHelper is being initialized, I get an error that says "Argument applicationId cannot be null"

I tried adding:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" />

to AndroidManifest.xml, and the following to Strings.xml:

<string name="app_id">12471902489108</string>

but the application id still cannot be read.

I tried 10 different capitalizations for "com.facebook.sdk.ApplicationId", but I still get the same error.

Here is the stack trace for the exception:

Java.Lang.NullPointerException: Argument applicationId cannot be null
  at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00023] in /Users/builder/data/lanes/monodroid-mlion-master/294d4619/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:368
  at Com.Facebook.UiLifecycleHelper.OnCreate (Android.OS.Bundle) [0x00048] in c:\buddyup\monodroid-samples\monodroid-samples\Facebook\Mono.Facebook\obj\Debug\generated\src\Com.Facebook.UiLifecycleHelper.cs:158
  at BuddyUp.FBLoginActivity.OnCreate (Android.OS.Bundle) [0x00027] in c:\buddyup\mobile\buddyup_mobile\BuddyUp\FBLoginActivity.cs:71
  at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-mlion-master/294d4619/source/monodroid/src/Mono.Android/platforms/android-10/src/generated/Android.App.Activity.cs:1561
  at at (wrapper dynamic-method) object.0f7bec40-34dd-40a5-a892-0a3ffbf275a4 (intptr,intptr,intptr) <IL 0x00017, 0x00043>
  at 
  at --- End of managed exception stack trace ---
  at java.lang.NullPointerException: Argument applicationId cannot be null
  at    at com.facebook.internal.Validate.notNull(Validate.java:29)
  at    at com.facebook.Session.<init>(Session.java:224)
  at    at com.facebook.Session.<init>(Session.java:209)
  at    at com.facebook.UiLifecycleHelper.onCreate(UiLifecycleHelper.java:73)
  at    at buddyup.FBLoginActivity.n_onCreate(Native Method)
  at    at buddyup.FBLoginActivity.onCreate(FBLoginActivity.java:33)
  at    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  at    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
  at    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
  at    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
  at    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
  at    at android.os.Handler.dispatchMessage(Handler.java:99)
  at    at android.os.Looper.loop(Looper.java:130)
  at    at android.app.ActivityThread.main(ActivityThread.java:3683)
  at    at java.lang.reflect.Method.invokeNative(Native Method)
  at    at java.lang.reflect.Method.invoke(Method.java:507)
  at    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
  at    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
  at    at dalvik.system.NativeStart.main(Native Method)

BluetoothChat.BluetoothChatService.cs - clarify MY_UUID

I tried this project and not worked. Then I discovered that the problem was in the wrong UUID. I entered 00001101-0000-1000-8000-00805F9B34FB and then worked. The value I got from bluetoothDevice.getUuids () [0] .getUuid () from the device to which i want to connect. So it seems that for CreateRfcommSocketToServiceRecord should use the UUID of the device and not from the application. If so, please modify the Commentary private static UUID MY_UUID

i can't override OnOptionsItemSelected .. etc on SherlockFragmentActivity

hello,
i'm using sherlock in my project, and I inherit SherlockFragmentActivity, but i faced problem which was that OnOptionsItemSelected(Android.Views.IMenu)': cannot override inherited member 'Xamarin.ActionbarSherlockBinding.App.SherlockFragmentActivity.OnOptionsItemSelected(Android.Views.IMenu)' because it is sealed

i faced the same with OnCreateOptionsMenu, OnPrepareOptionsMenu

ActionBarPullToRefresh doesn't build with ActionBarSherlock 4.4.0

I blindly tried adding the ActionBarPullToRefresh.dll to my existing project that uses ActionBarSherlock, and started seeing build errors like the following:

package uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher does not exist uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher.OnRefreshListener

The ActionBarPullToRefresh sample app worked fine, so I was confused. I added a reference to ActionBarSherlock (and then Mono.Android.Support.v4), and then the sample project started having build errors:

package com.actionbarsherlock.widget.ShareActionProvider does not exist com.actionbarsherlock.widget.ShareActionProvider.OnShareTargetSelectedListener
package com.actionbarsherlock.widget.SearchView does not exist com.actionbarsherlock.widget.SearchView.OnSuggestionListener 
etc...

Double-clicking the error opens up one of the generated obj/.../*.java files.

Is ActionBarPullToRefresh not compatible with ActionBarSherlock? Can it be made to be if not?

Facebook example error

If I have installed the facebook application, the authentication with Facebook hangs with the error "login fail please contact the marker of this app and ask them to issue 1732910 to facebook".

If I uninstall the facebook application, the authentications works fine.

ActionBarSherlock fails to build.

Hey,
When I grab the latest build I from the git repo and try to build it in VS2012 with latest Mono for Android (windows uninstaller calls it version 4.4.55, and VS says there is no updates when I manually check).

Error I get is

Error 6 The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
at Ionic.Zip.ZipEntry.InternalExtract(String baseDir, Stream outstream, String password)
at Ionic.Zip.ZipFile._InternalExtractAll(String path, Boolean overrideExtractExistingProperty)
at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext() Mono.ActionbarsherlockTest

Wanting to be able to build this for Android 2.2. Any help would be greatly appreciated.

Google Maps MD5 fingerprint

Hey All,

From information on the internet, you need to request a API key by giving the MD5 fingerprint from your android debug store. All examples state it should look like
keytool -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android
however from looking at the way the project gets signed, it uses a different location as shown below
-keystore "obj/Debug/debug.keystore" -storepass "android" -keypass "android"

Running that as so
keytool -list -alias androiddebugkey -keystore "obj/Debug/debug.keystore" -storepass "android" -keypass "android"
produces a different MD5 fingerprint and this ends up working with the Google Maps example, is the ~/.android/debug.keystore not the correct place to do this?

Cheers,

ChrisNTR

error in ActionBarPullToRefresh

When compile the sample I have this error:

Error CS0234: The type or namespace name 'Void' does not exist in the namespace 'java.lang' (are you missing an assembly reference?) (CS0234) (ActionBarPullToRefreshSample)

I have problems with reference :
using Void = Java.Lang.Void;

MapsAndLocationDemoV2 on screen rotation

UPDATE 04/29/2013: Please check at my latest comment!

When running the MapAndLocationDemoV2 on my Samsung Galaxy S3 device, it works fine until I change the screen orientation. Then, the screen is redraw correctly but the Google Maps fragment is not responding anymore. I can click on the "Zoom In/Out" button but the map won't change. Touching the map does not do anything.

The bug is happening when screen to rotating ONCE the application is running. Starting the application in landscape initialy is working.

I've trap those to lines in the debug log while changing my screen orientation:

01-07 14:19:41.165 E/SpannableStringBuilder(20204): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
01-07 14:19:41.165 E/SpannableStringBuilder(20204): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

Android L project only seems to work if Lollipop is already installed

HelloToolbar

Only seems to work if Lollipop is already on the device. So, why use AppCompat?

I just get the following build errors:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets: Error: Tool exited with code: 1. Output: obj/Debug/res/values/styles.xml:1: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Material.Light.DarkActionBar'.

obj/Debug/res/values/styles.xml:2: error: Error: No resource found that matches the given name: attr 'android:colorAccent'.
obj/Debug/res/values/styles.xml:1: error: Error: No resource found that matches the given name: attr 'android:colorPrimary'.
obj/Debug/res/values/styles.xml:1: error: Error: No resource found that matches the given name: attr 'android:colorPrimaryDark'.

all this example to run from the fragment?

// Construct an Intent as normal
            Intent intent = new Intent (this, typeof(DetailActivity));
            intent.PutExtra (DetailActivity.EXTRA_PARAM_ID, item.id);

            ActivityOptions activityOptions = ActivityOptions.MakeSceneTransitionAnimation (
                                                  this,
                // Now we provide a list of Pair items which contain the view we can transition from, and the name of the view it is 
                // transitioning to, in the launched activity
                                                  new Pair (view.FindViewById (Resource.Id.imageview_item), DetailActivity.VIEW_NAME_HEADER_IMAGE),
                                                  new Pair (view.FindViewById (Resource.Id.textview_name), DetailActivity.VIEW_NAME_HEADER_TITLE)
                                              );
            // Now we can start the Activity, providing the activity options as a bundle
            StartActivity (intent, activityOptions.ToBundle ());

I have an error when you run this code inside the Fragment. Apparently as an argument I need main Activity. How can I get it?

SlidingFragmentActivity not exposed

Much appreciated binding, and a basic menu using SlidingActivity is possible, but I have been completely unsuccessful getting the SlidingFragmentActivity to resolve. Digging into the binding a bit revealed that the SlidingFragmentActivity class does not seem to be exposed.

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.