Con la versione Android 4.4 ci si puo' trovare di fronte al messaggio "device unauthorized" da adb
la soluzione e' molto semplice. Ci si e' dimenticati di andare sul telefono e si deve cliccare Ok sulla richiesta di autorizzazione
martedì 6 maggio 2014
JPlayer
JPlayer e' un plugin di JQuery che permette di mostrare video ed eseguire file audio via browser in modo indipentente dal browser stesso e quindi con una migliore riuscita ed uniformita' tra i diversi client/browser (il tag <audio> per esempio non funziona in modo uguale sui differenti browser desktop e mobile)
Il codice sottostante mostra una implementazione completa del controllo
Si osserva che nelle prime righe sono caricate le librerie jquery e jplayer, in seguito viene definito il tipo di file ed il nome del file da riprodurre (in questo caso taxus.mp3)
In seguito si ha l'impostazione del vero e proprio player
Per la vestizione tutto e' gestito a livello di css per esempio
div.jp-audio width e' la dimesione totale del player
--------------------------------------------------------
<html>
<head>
<link type="text/css" href="./skin/blue.monday/jplayer.blue.monday.css" rel="stylesheet" />
<script type="text/javascript" src="./js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="./js/jquery.jplayer.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "Taxus",
mp3: "./audio/taxus.mp3",
});
},
swfPath: "/js",
supplied: "mp3"
});
});
</script>
</head>
<body>
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio">
<div class="jp-type-single">
<div class="jp-gui jp-interface">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
</ul>
<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar"></div>
</div>
</div>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
<div class="jp-time-holder">
<div class="jp-current-time"></div>
<div class="jp-duration"></div>
<ul class="jp-toggles">
<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>
<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>
</ul>
</div>
</div>
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>.
</div>
</div>
</div>
</body>
</html>
--------------------------------------------------------
E' possibile ottenere anche un player ridotto semplicemente cancellando i riferimenti ai pulsanti delle funzioni.
Un esempio minimale (solo Play e Stop)
ed il relativo codice
--------------------------------------------------------
<html>
<head>
<link type="text/css" href="./skin/blue.monday/jplayer.blue.monday.css" rel="stylesheet" />
<script type="text/javascript" src="./js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="./js/jquery.jplayer.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "Taxus",
mp3: "./audio/taxus.mp3",
});
},
swfPath: "/js",
supplied: "mp3"
});
});
</script>
</head>
<body>
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio">
<div class="jp-type-single">
<div class="jp-gui jp-interface">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
</ul>
</div>
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>.
</div>
</div>
</div>
</body>
</html>
Il codice sottostante mostra una implementazione completa del controllo
Si osserva che nelle prime righe sono caricate le librerie jquery e jplayer, in seguito viene definito il tipo di file ed il nome del file da riprodurre (in questo caso taxus.mp3)
In seguito si ha l'impostazione del vero e proprio player
Per la vestizione tutto e' gestito a livello di css per esempio
div.jp-audio width e' la dimesione totale del player
--------------------------------------------------------
<html>
<head>
<link type="text/css" href="./skin/blue.monday/jplayer.blue.monday.css" rel="stylesheet" />
<script type="text/javascript" src="./js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="./js/jquery.jplayer.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "Taxus",
mp3: "./audio/taxus.mp3",
});
},
swfPath: "/js",
supplied: "mp3"
});
});
</script>
</head>
<body>
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio">
<div class="jp-type-single">
<div class="jp-gui jp-interface">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
</ul>
<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar"></div>
</div>
</div>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
<div class="jp-time-holder">
<div class="jp-current-time"></div>
<div class="jp-duration"></div>
<ul class="jp-toggles">
<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>
<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>
</ul>
</div>
</div>
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>.
</div>
</div>
</div>
</body>
</html>
--------------------------------------------------------
E' possibile ottenere anche un player ridotto semplicemente cancellando i riferimenti ai pulsanti delle funzioni.
Un esempio minimale (solo Play e Stop)
ed il relativo codice
--------------------------------------------------------
<html>
<head>
<link type="text/css" href="./skin/blue.monday/jplayer.blue.monday.css" rel="stylesheet" />
<script type="text/javascript" src="./js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="./js/jquery.jplayer.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "Taxus",
mp3: "./audio/taxus.mp3",
});
},
swfPath: "/js",
supplied: "mp3"
});
});
</script>
</head>
<body>
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio">
<div class="jp-type-single">
<div class="jp-gui jp-interface">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
</ul>
</div>
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>.
</div>
</div>
</div>
</body>
</html>
Rotazione 3D in Python
Una funzione per calcolare la rotazione 3d di un punto attorno al centro degli assi mediante Python usando gli angoli di Eulero
--------------------------------------------------------------
import math
import numpy
# yaw = alfa
# pitch = beta
# roll = gamma
def ruota3D(alfa,beta,gamma,x,y,z):
alfa = math.radians(alfa)
beta = math.radians(beta)
gamma = math.radians(gamma)
ca = math.cos(alfa)
sa = math.sin(alfa)
cb = math.cos(beta)
sb = math.sin(beta)
cg = math.cos(gamma)
sg = math.sin(gamma)
ma = numpy.empty((3,3))
ma [0][0] = ca*cb
ma [0][1] = ((ca*sb*sg)-(sa*cg))
ma [0][2] = ((ca*sb*cg)+(sa*sg))
ma [1][0] = sa*cb
ma [1][1] = ((sa*sb*sg)+ (ca*cg))
ma [1][2] = ((sa*sb*cg)-(ca*sg))
ma [2][0] = -sb
ma [2][1] = cb*sg
ma [2][2] = cb*cg
nx1 = ma[0][0] * x
nx2 = ma[0][1] * y
nx3 = ma[0][2] * z
nx = nx1+nx2+nx3
ny1 = ma[1][0] * x
ny2 = ma[1][1] * y
ny3 = ma[1][2] * z
ny = ny1+ny2+ny3
nz1 = ma[2][0] * x
nz2 = ma[2][1] * y
nz3 = ma[2][2] * z
nz = nz1+nz2+nz3
return [nx,ny,nz]
xx = ruota3D(0,0,90,1,1,1)
print xx
da Wikipedia |
--------------------------------------------------------------
import math
import numpy
# yaw = alfa
# pitch = beta
# roll = gamma
def ruota3D(alfa,beta,gamma,x,y,z):
alfa = math.radians(alfa)
beta = math.radians(beta)
gamma = math.radians(gamma)
ca = math.cos(alfa)
sa = math.sin(alfa)
cb = math.cos(beta)
sb = math.sin(beta)
cg = math.cos(gamma)
sg = math.sin(gamma)
ma = numpy.empty((3,3))
ma [0][0] = ca*cb
ma [0][1] = ((ca*sb*sg)-(sa*cg))
ma [0][2] = ((ca*sb*cg)+(sa*sg))
ma [1][0] = sa*cb
ma [1][1] = ((sa*sb*sg)+ (ca*cg))
ma [1][2] = ((sa*sb*cg)-(ca*sg))
ma [2][0] = -sb
ma [2][1] = cb*sg
ma [2][2] = cb*cg
nx1 = ma[0][0] * x
nx2 = ma[0][1] * y
nx3 = ma[0][2] * z
nx = nx1+nx2+nx3
ny1 = ma[1][0] * x
ny2 = ma[1][1] * y
ny3 = ma[1][2] * z
ny = ny1+ny2+ny3
nz1 = ma[2][0] * x
nz2 = ma[2][1] * y
nz3 = ma[2][2] * z
nz = nz1+nz2+nz3
return [nx,ny,nz]
xx = ruota3D(0,0,90,1,1,1)
print xx
lunedì 5 maggio 2014
JDK 8 e WIndows XP
Installando JDK8 su Windows XP, l'installer ha generato questo errore ovvero non e' stata trovata la chiave di registor RegDeleteKeyExA in ADVAPI32.DLL
Dopo un po' di ricerche ho trovato sul sito Oracle che JDK8 non supporta Windows XP e che quindi si deve rimanere sulla versione precedente
Dopo un po' di ricerche ho trovato sul sito Oracle che JDK8 non supporta Windows XP e che quindi si deve rimanere sulla versione precedente
Editare file su server remoti
Accade spesso di dover editare file testo su server remoti. Al posto di spostare il file in locale, editarlo e poi ripassarlo sul server via SSH puo' essere comodo montare il filesystem remoto mediante SSHFS
su Debian di deve installare
apt-get install sshfs
si crea poi una directory
mkdir /mnt/remota
e si monta con
sshfs luca@150.217.xxx.xxx:/home/luca /mnt/remota
a questo punto in /mnt/remota troveremo i file remoti posti nella directory /home/luca e si editano direttamente i file remoti
per smontare la risorsa
fusermount -u /mnt/remota
chgrp fuse /usr/bin/fusermount
su Debian di deve installare
apt-get install sshfs
si crea poi una directory
mkdir /mnt/remota
e si monta con
sshfs luca@150.217.xxx.xxx:/home/luca /mnt/remota
a questo punto in /mnt/remota troveremo i file remoti posti nella directory /home/luca e si editano direttamente i file remoti
per smontare la risorsa
fusermount -u /mnt/remota
di default questa operazione puo' essere effettuata solo da root. Per permettere ad un utente normale di usare sshfs si deve aggiungere al gruppo fuse (se si cerca di montare la risorsa remota via sshfs senza i permessi si ha il messaggio Transport Endpoint is not connected)
chmod u+s /usr/bin/fusermount
adduser nomeutente fuse
mercoledì 30 aprile 2014
Errore Lint su esportazione di una applicazione Android
Al momento di esportare una applicazione da Eclipse mediante Android Tools, Lint ha deciso che per fare il suo lavoro dovevo effettuare la traduzione delle stringhe in tutte le lingue del mondo
Per ovviare al problema si puo' andare Window/Preference/Lint Error Checking e modificare l'errore Missing Translation da una Severity Fatal ad una Serverity Warning
Per ovviare al problema si puo' andare Window/Preference/Lint Error Checking e modificare l'errore Missing Translation da una Severity Fatal ad una Serverity Warning
Hotspot e Bluetooth su Android
Ed ecco che ho sperimentato un bel bug di Android. Usando contemporaneamente l'HotSpot WiFi e Bluetooth sul Motorola Moto G con Android KitKat 4.4.2 il sistema operativo interrompe la funzione HotSpot
Questo bug e' descritto in https://code.google.com/p/android/issues/detail?id=41631 e sembra che non sia presente un Android 4.3
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...