{"id":20038554,"url":"https://github.com/yahoo/songbirdcharts","last_synced_at":"2025-05-05T06:32:18.387Z","repository":{"id":52156685,"uuid":"246716058","full_name":"yahoo/SongbirdCharts","owner":"yahoo","description":" Allows for other apps to render accessible audio charts","archived":false,"fork":false,"pushed_at":"2023-03-21T03:23:29.000Z","size":1567,"stargazers_count":21,"open_issues_count":2,"forks_count":10,"subscribers_count":4,"default_branch":"songbird","last_synced_at":"2025-04-08T18:51:38.346Z","etag":null,"topics":["accessibility","voice"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yahoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"LICENSE.md","code_of_conduct":"Code-of-Conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-12T01:25:55.000Z","updated_at":"2024-10-22T12:08:43.000Z","dependencies_parsed_at":"2024-11-13T10:40:45.279Z","dependency_job_id":null,"html_url":"https://github.com/yahoo/SongbirdCharts","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FSongbirdCharts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FSongbirdCharts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FSongbirdCharts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FSongbirdCharts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yahoo","download_url":"https://codeload.github.com/yahoo/SongbirdCharts/tar.gz/refs/heads/songbird","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252451814,"owners_count":21749988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility","voice"],"created_at":"2024-11-13T10:29:58.330Z","updated_at":"2025-05-05T06:32:17.327Z","avatar_url":"https://github.com/yahoo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Songbird Charts\n\u003e  This is a demo app with audio charts rendering and functionality. Allows for other apps to render accessible audio charts. To see it in action, please build the demo app on your device or emulator. You can also try it out on the Yahoo Finance Android app on the Play Store, that uses this library to make audio charts available. \n\n\u003cimg src=\"https://user-images.githubusercontent.com/12967899/76646108-c370b300-6530-11ea-98a5-1aa03145c31b.png\" width=\"310\" height=\"630\" /\u003e \u003cimg src=\"https://user-images.githubusercontent.com/12967899/76646112-c66ba380-6530-11ea-812e-03c05154d7b5.png\" width=\"310\" height=\"630\" /\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/12967899/110689366-99d48100-81b0-11eb-836e-06192fe800cd.png\" width=\"310\" height=\"630\" /\u003e \u003cimg src=\"https://user-images.githubusercontent.com/12967899/110689368-9a6d1780-81b0-11eb-81dd-c75e90e57838.png\" width=\"310\" height=\"630\" /\u003e\n\nCharts such as stocks, sports scores and political polls are still almost impossible to use for people with visual impairment. The quick summary of thousands or more data points charts are meant for is virtually not usable for about 300 million people worldwide and for users on a voice interface. This is a first step towards changing that. \n\n# Demo video\n\nhttps://youtu.be/d_c-auuDsz8 here is a demo video of audio charts in action\n\n## Table of Contents\n\n- [Background](#background)\n- [Install](#install)\n- [Usage](#usage)\n- [Contribute](#contribute)\n- [Maintainers](#maintainers)\n- [License](#license)\n\n## Background\n\nThis project embodies Verizon Media's commitment to accessibility and to going above and beyond in making our products accessible to all. What started as a conversation about the state of charts for users with visual impairment led to an initial prototype, several user stidies and finally, this solution presenting primarily visual information with music and haptics. We realize that this problem is bigger than financial graphs are also hoping to see where the open source community takes this approach and applies it to interfaces such as voice, web etc. The tones are played in Hz. This is largely a reference implementation and we'll try to review pull requests as we can. We are however not sure of the SLAs yet. Thank you! \n\n## Install\n### Gradle integration\n\nIn `dependencies` section of modules `build.gradle` add reference\nto SDK library:\n\n```\n// Project-wide build.gradle\n// Add maven repository\nallprojects {\n    repositories {\n        maven { url 'https://raw.github.com/yahoo/SongbirdCharts/songbird/' }\n    }\n}\n\n// App build.gradle\ndependencies {\n    // ...\n\n    // Songbird SDK\n    compile 'com.yahoo.finance:songbird:1.3.1' // Use latest versionrere\n\n    // ...   \n}\n```\nIf you've never used git before, please take a moment to familiarize yourself with [what it is and how it works](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics). To install this project, you'll [need to have git installed and set up](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) on your local dev environment.\n\n## Usage\n\nIt's as easy as adding this view to your XML file:\n\u003e\n    \u003ccom.yahoo.mobile.android.audiocharts.view.SongbirdChartView\n        android:id=\"@+id/songbird_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"0dp\"\n        app:layout_constraintStart_toStartOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\"\n        app:layout_constraintEnd_toEndOf=\"parent\"\n        app:layout_constraintBottom_toBottomOf=\"parent\"/\u003e\n\nInitializing it with a `AudioChartViewModel` and a `ScrubCallback`:\n\u003e\n      songbirdView.setViewModel(chartViewModel)\n\nAnd act on that chart object to have it do whatever you need (more details below):\n\u003e\n    songbirdView.playSummaryAudio()\n\nDon't forget to dispose when you're done:\n\u003e\n    songbirdView.dispose()\n\n### SongbirdChartView\n#### playSummaryAudio()\nPlays each chart point's tone in succession\n\n#### dispose()\nNotifies SongbirdChartView to dispose of any disposables to avoid memory leaks\n\n### AudioChartViewModel\n#### val contentDescription: String\nThe summary content description for the chart view, not applied on it's own. You can use this in your own view wherever it fits best. The sample uses it in the toolbar.\n\n#### val benchmark: Double\nThe value that represents the dotted benchmark line that goes horizontally across the chart\n\n#### val chartDataPoints: List\u003cAudioChartPointViewModel\u003e\nThe chart data points\n\n#### val priceHint: Int\nPrice hint for the price labels renderd in the y-axis (e.g. priceHint of 2.0 will render 100.00)\n\n#### val showXAxis: Boolean = true\nDisplays x-axis with timestamps. True by default\n\n#### val xAxisLabels: List\u003cXAxisLabel\u003e = listOf()\nThe XAxisLabels to be displayed if showXAxis is true\n\n#### val showYAxis: Boolean = true\nDisplays y-axis with highestPointValue, lowestPointValue, benchmark value, and the last value in the list. True by default\n\n#### @ColorRes val fillColor: Int\nThe color of the gradient below the chart line\n\n#### @ColorRes val strokeColor: Int\nThe color of the chart line itself\n\n#### @ColorRes val benchmarkColor: Int = R.color.chart_line\nThe color of the dotted benchmark line\n\n### AudioChartPointViewModel\n#### val value: Double\nThe value of this point\n\n#### val timestamp: Long\nThe timestamp of this point in milliseconds\n\n#### val index: Int\nThe index of this point in the list\n\n#### val onSwipeListener: (() -\u003e Unit)\nTo be notified whenever the user swiped onto this point and is now focused on it in talkback mode\n\n### XAxisLabel\n#### val index: Int\nThe index of this label in the list\n\n#### val label: String\nThe timestamp converted into a string format to be displayed. Typically uses the AudioChartPointViewModel's timestamp when the index matches. It's up to you to format the timestamp to your needs.\n\n### AudioRecyclerView.ScrubCallback\n#### onScrub(x: Float)\nThe chart has received a motion event at this rawX (one finger drag when talkback is off, two finger drag when talkback is on)\n\n#### onRelease(x: Float)\nThe chart was being scrubbed and has now been released at this rawX\n\n### DimensionUtils\n#### getItemIndexByWidth(context: Context, numItems: Int, x: Float): Int\n`context`: Used to retrieve the screen width in pixels\n\n`numItems`: the total number of chart points\n\n`x`: rawX of the Touch MotionEvent\n\nreturns the closest index of `AudioChartPointViewModel` that maps to the rawX\n\n## Contribute\nPlease refer to [the contributing.md file](Contributing.md) for information about how to get involved. We welcome issues, questions, and pull requests. Pull Requests are welcome.\n\n## Maintainers\nFinance Mobile Android finance-android-dev@verizonmedia.com\n\n## License\nThis project is licensed under the terms of the [Apache 2.0](LICENSE-Apache-2.0) open source license. Please refer to [LICENSE](LICENSE) for the full terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Fsongbirdcharts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyahoo%2Fsongbirdcharts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Fsongbirdcharts/lists"}