MCPcopy Index your code
hub / github.com/arduino/Arduino-Science-Journal-Android

github.com/arduino/Arduino-Science-Journal-Android @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
7,261 symbols 27,068 edges 633 files 922 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Science Journal Logo

Twitter: @Arduino License

Arduino Science Journal for Android allows you to gather data from the world around you. It uses sensors to measure your environment, like light and sound, so you can graph your data, record your experiments, and organize your questions and ideas. It's the lab notebook you always have with you.

Arduino Science Journal

Features

  • 📈 Visualize and graph data from a variety of sources including your device's built-in sensor
  • 📲 Connect to external sensors over BLE .
  • 📷 Annotate with pictures and 📝 notes.

Building the app

Download the source, go into the OpenScienceJournal directory and run:

./gradlew app:installDebug

Alternatively, import the source code in OpenScienceJournal into Android Studio (File, Import Project).

Note: You'll need Android SDK version 27, build tools 23.0.3, and the Android Support Library to compile the project. If you're unsure about this, use Android Studio and tick the appropriate boxes in the SDK Manager.

The Arduino Science Journal README contains details about the organization of the source code, and the relationship of this published source to the published app.

Google Drive Sync

In order to enable Google Drive Sync, you must first create a Google API project and enable the Drive API for your app. See instructions in the Google Drive API documentation

Contributing

Please read our guidelines for contributors.

License

Open Science Journal is licensed under the Apache 2 license.

More

Science Journal formerly brought to you by Making & Science, an initiative by Google. Arduino Science Journal is now an official Arduino Education product.

Security

If you think you found a vulnerability or other security-related bug in the Arduino Science Journal, please read our security policy and report the bug to our Security Team 🛡️ Thank you!

e-mail contact: security@arduino.cc

Extension points exported contracts — how you extend this code

FallibleConsumer (Interface)
A consumer that does something with a provided value, but may fail in some way, throwing an exception. [23 implementers]
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/javalib/FallibleConsumer.java
AdvertisedDeviceConsumer (Interface)
(no doc) [1 implementers]
api/ScienceJournalApi/src/main/java/com/google/android/apps/forscience/whistlepunk/api/scalarinput/ScalarSensorService.java
OpenSourceComponent (Interface)
(no doc)
OpenScienceJournal/app/src/main/java/com/google/android/apps/forscience/whistlepunk/opensource/components/OpenSourceComponent.java
MaybeConsumer (Interface)
Many times, a queued operation may succeed and deliver a value, or fail with an exception. The methods that enqueue such [35 …
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/javalib/MaybeConsumer.java
DataConsumer (Interface)
(no doc) [1 implementers]
api/ScienceJournalApi/src/main/java/com/google/android/apps/forscience/whistlepunk/api/scalarinput/AdvertisedSensor.java
SensorAppearance (Interface)
How a sensor appears in the app [6 implementers]
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/SensorAppearance.java
SensorDiscoverer (Interface)
One way of discovering additional sensors that can be added to an experiment [7 implementers]
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/devicemanager/SensorDiscoverer.java
SensorObserver (Interface)
Observes changes to a sensor, potentially serialized between processes. Assume all calls are on the main thread [8 implementers]
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/sensorapi/SensorObserver.java

Core symbols most depended-on inside this repo

get
called by 664
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/MkrSciBleSensorAppearance.java
getString
called by 420
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/sensorapi/ReadableSensorOptions.java
size
called by 395
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/sensordb/ScalarReadingList.java
put
called by 303
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/sensorapi/WriteableSensorOptions.java
get
called by 289
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/devicemanager/CompositeSensitiveExpandableAdapter.java
getContext
called by 200
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/remote/HttpCall.java
setText
called by 168
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/filemetadata/TextLabelValue.java
getInstance
called by 140
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/AppSingleton.java

Shape

Method 6,411
Class 695
Interface 143
Enum 12

Languages

Java100%

Modules by API surface

OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/metadata/SimpleMetaDataManager.java124 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/project/experiment/ExperimentDetailsFragment.java114 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/review/RunReviewFragment.java101 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/SensorCardPresenter.java94 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/actionarea/SensorFragment.java87 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/project/ExperimentListFragment.java80 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/filemetadata/Experiment.java79 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/ExportService.java76 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/scalarchart/ChartController.java73 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/scalarchart/ChartOptions.java65 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/RunReviewOverlay.java64 symbols
OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/sensorapi/ScalarSensor.java57 symbols

For agents

$ claude mcp add Arduino-Science-Journal-Android \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact