Я прилагаю усилия к изучению Cordova, но кажется, что ресурсы действительно плохие, и, похоже, нет надлежащего сообщества.
Я пытаюсь создать приложение musi c, и Мне как-то удалось реализовать функцию Play / Pause. Да, я не реализовывал никаких проектов, потому что я не понимаю, что здесь происходит.
Теперь я хочу реализовать элемент управления и хочу добавить нативный элемент управления musi c для Android, на данный момент.
Но сайт npm утверждает следующее:
ссылка здесь
Я имею в виду, я едва понимаю Отдельная вещь, о том, как и где вызывать медиа, и как подключить событие к основному медиа-плагину в Cordova.
Мой код:
index. html
<html>
<head>
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<div class="lists">
<button id=list1>Song</button>
<button id=list2>Artist</button>
<button id=list3>Album</button>
<button id=list4>Playlist</button>
</div>
<div id="imgs">
<img src="song/Song1.mp3" alt="Song">
</div>
<div class = "buttons">
<img class = "button1" id = "volumeUp" src="img/Pre.png">
<img class = "button2" id = "play&pauseAudio" src="img/Play.png">
<img class = "button3" id = "volumeDown" src="img/Next.png">
</div>
</body>
<script src="js/media.js" type="text/javascript"></script>
<script src="js/notif.js" type="text/javascript"></script>
<script src="cordova.js" type="text/javascript"></script>
</html>
index. css
body{
background-color: rgb(104, 104, 104);
margin: 0px 0px 0px 0px;
}
.buttons > img{
background-color: rgb(212, 167, 255);
border: 1px black solid;
outline: none;
border: none;
margin: auto;
width: 60px;
border-radius: 50px;
transition: 0.1s ease-in-out;
}
.buttons > img:active{
background-color: rgb(145, 115, 173);
size: 40%;
transition: 0.1s ease-in-out;
}
.buttons{
display: grid;
grid-template-columns: auto auto auto;
grid-template-rows: auto auto auto;
align-items: center;
margin: auto;
padding: 10px 0px;
}
#imgs{
text-align: center;
background-color: white;
width: 300px;
height: 300px;
margin: auto;
margin-top: 50px;
margin-bottom: 50px;
}
.lists > button{
border: none;
outline: none;
background-color: transparent;
font-size: 15px;
padding: auto;
margin-top: 10px;
}
.lists{
margin: auto;
text-align: center;
}
media. js
document.getElementById("play&pauseAudio").addEventListener("click", toggleAudio);
document.getElementById("volumeUp").addEventListener("click", volumeUp);
document.getElementById("volumeDown").addEventListener("click", volumeDown);
var playOn = true;
var myMedia = null;
function toggleAudio() {
if(playOn==true)
{
document.getElementById("play&pauseAudio").src="img/Pause.png";
playAudio();
playOn = false;
}
else
{
document.getElementById("play&pauseAudio").src="img/Play.png";
pauseAudio();
playOn = true;
}
}
function playAudio() {
var src = "/android_asset/www/song/Song1.mp3";
if(myMedia === null) {
myMedia = new Media(src, onSuccess, onError);
function onSuccess() {
console.log("playAudio Success");
}
function onError(error) {
console.log("playAudio Error: " + error.code);
}
}
myMedia.play();
}
function pauseAudio() {
if(myMedia) {
myMedia.pause();
}
}
var volumeValue = 0.5;
function volumeUp() {
if(myMedia && volumeValue < 1) {
myMedia.setVolume(volumeValue += 0.1);
}
}
function volumeDown() {
if(myMedia && volumeValue > 0) {
myMedia.setVolume(volumeValue -= 0.1);
}
}
notif. js
(буквально скопировал и вставил весь этот код )
MusicControls.create({
track : 'Time is Running Out', // optional, default : ''
artist : 'Muse', // optional, default : ''
album : 'Absolution', // optional, default: ''
cover : '/android_asset/www/song/Song1.mp3', // optional, default : nothing
// cover can be a local path (use fullpath 'file:///storage/emulated/...', or only 'my_image.jpg' if my_image.jpg is in the www folder of your app)
// or a remote url ('http://...', 'https://...', 'ftp://...')
isPlaying : true, // optional, default : true
dismissable : false, // optional, default : false
// hide previous/next/close buttons:
hasPrev : true, // show previous button, optional, default: true
hasNext : true, // show next button, optional, default: true
hasClose : true, // show close button, optional, default: false
// iOS only, optional
// duration : 60, // optional, default: 0
// elapsed : 10, // optional, default: 0
// hasSkipForward : true, //optional, default: false. true value overrides hasNext.
// hasSkipBackward : true, //optional, default: false. true value overrides hasPrev.
// skipForwardInterval : 15, //optional. default: 0.
// skipBackwardInterval : 15, //optional. default: 0.
// hasScrubbing : false, //optional. default to false. Enable scrubbing from control center progress bar
// Android only, optional
// text displayed in the status bar when the notification (and the ticker) are updated
ticker : 'Now playing "Time is Running Out"',
//All icons default to their built-in android equivalents
//The supplied drawable name, e.g. 'media_play', is the name of a drawable found under android/res/drawable* folders
playIcon: 'media_play',
pauseIcon: 'media_pause',
prevIcon: 'media_prev',
nextIcon: 'media_next',
closeIcon: 'media_close',
notificationIcon: 'notification'
}, onSuccess, onError);
MusicControls.destroy(onSuccess, onError);
function events(action) {
const message = JSON.parse(action).message;
switch(message) {
case 'music-controls-next':
// Do something
break;
case 'music-controls-previous':
// Do something
break;
case 'music-controls-pause':
// Do something
break;
case 'music-controls-play':
// Do something
break;
case 'music-controls-destroy':
// Do something
break;
// External controls (iOS only)
case 'music-controls-toggle-play-pause' :
// Do something
break;
case 'music-controls-seek-to':
const seekToInSeconds = JSON.parse(action).position;
MusicControls.updateElapsed({
elapsed: seekToInSeconds,
isPlaying: true
});
// Do something
break;
// Headset events (Android only)
// All media button events are listed below
case 'music-controls-media-button' :
// Do something
break;
case 'music-controls-headset-unplugged':
// Do something
break;
case 'music-controls-headset-plugged':
// Do something
break;
default:
break;
}
}
// Register callback
MusicControls.subscribe(events);
// Start listening for events
// The plugin will run the events function each time an event is fired
MusicControls.listen();
MusicControls.updateIsPlaying(true); // toggle the play/pause notification button
MusicControls.updateDismissable(true);
MusicControls.updateElapsed({
elapsed: 208, // seconds
isPlaying: true
});
Я пытался создать приложение, но панель управления не будет отображаться любой ценой. Я предполагаю, что мне нужно правильно подключить событие ??