5.2
This commit is contained in:
parent
222434ff8e
commit
e2ead286e2
@ -2,7 +2,7 @@
|
|||||||
<!-- You may freely edit this file. See commented blocks below for -->
|
<!-- You may freely edit this file. See commented blocks below for -->
|
||||||
<!-- some examples of how to customize the build. -->
|
<!-- some examples of how to customize the build. -->
|
||||||
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
||||||
<project name="SEPlayerService_Lite" default="jar" basedir=".">
|
<project name="SEPlayerService" default="jar" basedir=".">
|
||||||
<description>Builds, tests, and runs the project .</description>
|
<description>Builds, tests, and runs the project .</description>
|
||||||
<import file="nbproject/build-impl.xml"/>
|
<import file="nbproject/build-impl.xml"/>
|
||||||
<!--
|
<!--
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- *** GENERATED FROM project.xml - DO NOT EDIT *** -->
|
<!-- *** GENERATED FROM project.xml - DO NOT EDIT *** -->
|
||||||
<project name="SEPlayerService_Lite-impl" default="jar" basedir="..">
|
<project name="SEPlayerService-impl" default="jar" basedir="..">
|
||||||
<!--load-properties-->
|
<!--load-properties-->
|
||||||
<target name="pre-load-properties">
|
<target name="pre-load-properties">
|
||||||
<property file="nbproject/private/private.properties"/>
|
<property file="nbproject/private/private.properties"/>
|
||||||
@ -936,7 +936,7 @@
|
|||||||
<target name="semc-run" depends="semc-icon-assembly,semc-ppro-emulator,semc-do-run" if="semc-platform.trigger"/>
|
<target name="semc-run" depends="semc-icon-assembly,semc-ppro-emulator,semc-do-run" if="semc-platform.trigger"/>
|
||||||
<!--savaje-run-->
|
<!--savaje-run-->
|
||||||
<target name="savaje-run" if="savaje-platform.trigger">
|
<target name="savaje-run" if="savaje-platform.trigger">
|
||||||
<sunEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.jvmargs}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
|
<sunEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
|
||||||
<fileset dir="${dist.dir}">
|
<fileset dir="${dist.dir}">
|
||||||
<exclude name="javadoc/**"/>
|
<exclude name="javadoc/**"/>
|
||||||
</fileset>
|
</fileset>
|
||||||
@ -945,7 +945,7 @@
|
|||||||
<!--sjmc-run-->
|
<!--sjmc-run-->
|
||||||
<target name="sjmc-run" if="sjmc-platform.trigger">
|
<target name="sjmc-run" if="sjmc-platform.trigger">
|
||||||
<taskdef name="sjmcEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.sjmc.SJMCToolkitEmulatorExecTask" classpath="${libs.sjmc-ant-utils.classpath}"/>
|
<taskdef name="sjmcEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.sjmc.SJMCToolkitEmulatorExecTask" classpath="${libs.sjmc-ant-utils.classpath}"/>
|
||||||
<sjmcEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.jvmargs}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
|
<sjmcEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}">
|
||||||
<fileset dir="${dist.dir}">
|
<fileset dir="${dist.dir}">
|
||||||
<exclude name="javadoc/**"/>
|
<exclude name="javadoc/**"/>
|
||||||
</fileset>
|
</fileset>
|
||||||
@ -1059,7 +1059,7 @@
|
|||||||
<!--savaje-debug-->
|
<!--savaje-debug-->
|
||||||
<target name="savaje-debug" if="savaje-platform.trigger">
|
<target name="savaje-debug" if="savaje-platform.trigger">
|
||||||
<parallel>
|
<parallel>
|
||||||
<sunEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.jvmargs}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
|
<sunEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
|
||||||
<fileset dir="${dist.dir}">
|
<fileset dir="${dist.dir}">
|
||||||
<exclude name="javadoc/**"/>
|
<exclude name="javadoc/**"/>
|
||||||
</fileset>
|
</fileset>
|
||||||
@ -1074,7 +1074,7 @@
|
|||||||
<target name="sjmc-debug" if="sjmc-platform.trigger">
|
<target name="sjmc-debug" if="sjmc-platform.trigger">
|
||||||
<taskdef name="sjmcEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.sjmc.SJMCToolkitEmulatorExecTask" classpath="${libs.sjmc-ant-utils.classpath}"/>
|
<taskdef name="sjmcEmulatorExec" classname="org.netbeans.modules.j2me.cdc.project.sjmc.SJMCToolkitEmulatorExecTask" classpath="${libs.sjmc-ant-utils.classpath}"/>
|
||||||
<parallel>
|
<parallel>
|
||||||
<sjmcEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.jvmargs}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
|
<sjmcEmulatorExec home="${platform.home}" mainclass="${main.class}" args="${application.args}" jvmargs="${run.cmd.options}" device="${platform.device}" profile="${platform.profile}" xlet="${main.class.xlet}" applet="${main.class.applet}" debug="true" debuggeraddressproperty="jpda.port">
|
||||||
<fileset dir="${dist.dir}">
|
<fileset dir="${dist.dir}">
|
||||||
<exclude name="javadoc/**"/>
|
<exclude name="javadoc/**"/>
|
||||||
</fileset>
|
</fileset>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||||
build.xml.data.CRC32=b8ca046e
|
build.xml.data.CRC32=d5ed72e0
|
||||||
build.xml.script.CRC32=518797bb
|
build.xml.script.CRC32=4c4ce240
|
||||||
build.xml.stylesheet.CRC32=03eab09b
|
build.xml.stylesheet.CRC32=03eab09b
|
||||||
nbproject/build-impl.xml.data.CRC32=b8ca046e
|
nbproject/build-impl.xml.data.CRC32=d5ed72e0
|
||||||
nbproject/build-impl.xml.script.CRC32=a371a0b9
|
nbproject/build-impl.xml.script.CRC32=c6fa47a7
|
||||||
nbproject/build-impl.xml.stylesheet.CRC32=d670562e
|
nbproject/build-impl.xml.stylesheet.CRC32=a4fc63f1
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#Thu Jan 07 23:51:00 EET 2010
|
#Wed May 05 19:16:46 EEST 2010
|
||||||
netbeans.user=C\:\\Users\\aNNiMON\\.netbeans\\6.7
|
netbeans.user=C:\\Users\\aNNiMON\\.netbeans\\6.9m1
|
||||||
javadoc.preview=true
|
javadoc.preview=true
|
||||||
deployment.counter=3
|
|
||||||
config.active=
|
config.active=
|
||||||
deployment.number=0.0.2
|
deployment.counter=160
|
||||||
app-version.autoincrement=true
|
app-version.autoincrement=true
|
||||||
|
deployment.number=0.1.59
|
||||||
|
@ -17,7 +17,7 @@ deployment.method=NONE
|
|||||||
deployment.override.jarurl=false
|
deployment.override.jarurl=false
|
||||||
dist.dir=dist/${config.active}
|
dist.dir=dist/${config.active}
|
||||||
dist.jad=SEPlayerService.jad
|
dist.jad=SEPlayerService.jad
|
||||||
dist.jar=SEPlayerServiceLite.jar
|
dist.jar=SEPlayerService.jar
|
||||||
dist.javadoc.dir=${dist.dir}/doc
|
dist.javadoc.dir=${dist.dir}/doc
|
||||||
dist.root.dir=dist
|
dist.root.dir=dist
|
||||||
extra.classpath=${file.reference.MultimediaServices_API.jar}
|
extra.classpath=${file.reference.MultimediaServices_API.jar}
|
||||||
@ -50,8 +50,8 @@ manifest.apipermissions=
|
|||||||
manifest.file=manifest.mf
|
manifest.file=manifest.mf
|
||||||
manifest.jad=
|
manifest.jad=
|
||||||
manifest.manifest=
|
manifest.manifest=
|
||||||
manifest.midlets=MIDlet-1: SEPSLite,/icon.png,SEPS\n
|
manifest.midlets=MIDlet-1: SEPS,/icon.png,SEPS\n
|
||||||
manifest.others=MIDlet-Vendor: aNNiMON\nMIDlet-Name: SEPlayerServiceLite\nMIDlet-Version: 3.0\n
|
manifest.others=MIDlet-Vendor: aNNiMON\nMIDlet-Name: SEPlayerService\nMIDlet-Version: 5.3\n
|
||||||
manifest.pushregistry=
|
manifest.pushregistry=
|
||||||
name=SEPlayerService
|
name=SEPlayerService
|
||||||
no.dependencies=false
|
no.dependencies=false
|
||||||
@ -68,8 +68,8 @@ obfuscator.destjar=${build.dir}/obfuscated.jar
|
|||||||
obfuscator.srcjar=${build.dir}/before-obfuscation.jar
|
obfuscator.srcjar=${build.dir}/before-obfuscation.jar
|
||||||
platform.active=Sony_Ericsson_SDK_2_5_0_4_for_the_Java_TM__ME_Platform_Emulator_
|
platform.active=Sony_Ericsson_SDK_2_5_0_4_for_the_Java_TM__ME_Platform_Emulator_
|
||||||
platform.active.description=Sony Ericsson SDK 2.5.0.4 for the Java(TM) ME Platform(Emulator)
|
platform.active.description=Sony Ericsson SDK 2.5.0.4 for the Java(TM) ME Platform(Emulator)
|
||||||
platform.apis=JSR234-1.0,SATSA-APDU-1.0,JSR211-1.0,JSR75-1.0,J2ME-WS-1.0,J2ME-XMLRPC-1.0,JSR82-1.1,SATSA-JCRMI-1.0,SATSA-CRYPTO-1.0,JSR239-1.0,JSR179-1.0.1,MascotV3-1.0,JSR184-1.1,JSR238-1.0,MMAPI-1.1,NokiaUI-1.0,JSR229-1.1.0,SATSA-PKI-1.0,JSR180-1.0.1,JSR226-1.0,JSR177-1.0,SEMC_EXT_JP8-1.0,VSCL-2.0,VSCL-2.1,WMA-2.0,lib/semc_ext_jp8.jar
|
platform.apis=JSR234-1.0,SATSA-APDU-1.0,capuchin-1.0,JSR211-1.0,JSR75-1.0,J2ME-WS-1.0,J2ME-XMLRPC-1.0,JSR82-1.1,SATSA-JCRMI-1.0,SATSA-CRYPTO-1.0,JSR239-1.0,JSR179-1.0.1,MascotV3-1.0,JSR184-1.1,JSR238-1.0,MMAPI-1.1,JSR256-1.1,NokiaUI-1.0,JSR229-1.1.0,SATSA-PKI-1.0,JSR180-1.0.1,JSR226-1.0,JSR177-1.0,SEMC_EXT_JP8-1.0,VSCL-2.0,VSCL-2.1,WMA-2.0
|
||||||
platform.bootclasspath=${platform.home}/lib/mascotv3.jar:${platform.home}/lib/jsr226.jar:${platform.home}/lib/jsr256.jar:${platform.home}/lib/satsa-crypto.jar:${platform.home}/lib/jsr229.jar:${platform.home}/lib/jsr238.jar:${platform.home}/lib/j2me-xmlrpc.jar:${platform.home}/lib/jsr211.jar:${platform.home}/lib/vscl21.jar:${platform.home}/lib/satsa-jcrmi.jar:${platform.home}/lib/jsr082.jar:${platform.home}/lib/satsa-apdu.jar:${platform.home}/lib/jsr184.jar:${platform.home}/lib/nokiaext.jar:${platform.home}/lib/jsr239.jar:${platform.home}/lib/jsr75.jar:${platform.home}/lib/jsr179.jar:${platform.home}/lib/satsa-pki.jar:${platform.home}/lib/jsr180.jar:${platform.home}/lib/vscl.jar:${platform.home}/lib/mmapi.jar:${platform.home}/lib/j2me-ws.jar:${platform.home}/lib/wma20.jar:${platform.home}/lib/jsr234.jar:${platform.home}/lib/semc_ext_jp8.jar:${platform.home}/lib/cldcapi11.jar:${platform.home}/lib/midpapi20.jar
|
platform.bootclasspath=${platform.home}/lib/mascotv3.jar:${platform.home}/lib/jsr226.jar:${platform.home}/lib/jsr256.jar:${platform.home}/lib/satsa-crypto.jar:${platform.home}/lib/jsr229.jar:${platform.home}/lib/jsr238.jar:${platform.home}/lib/j2me-xmlrpc.jar:${platform.home}/lib/jsr211.jar:${platform.home}/lib/vscl21.jar:${platform.home}/lib/satsa-jcrmi.jar:${platform.home}/lib/jsr082.jar:${platform.home}/lib/satsa-apdu.jar:${platform.home}/lib/jsr184.jar:${platform.home}/lib/nokiaext.jar:${platform.home}/lib/capuchin.jar:${platform.home}/lib/jsr239.jar:${platform.home}/lib/jsr75.jar:${platform.home}/lib/satsa-pki.jar:${platform.home}/lib/jsr179.jar:${platform.home}/lib/jsr180.jar:${platform.home}/lib/vscl.jar:${platform.home}/lib/mmapi.jar:${platform.home}/lib/j2me-ws.jar:${platform.home}/lib/wma20.jar:${platform.home}/lib/jsr234.jar:${platform.home}/lib/semc_ext_jp8.jar:${platform.home}/lib/cldcapi11.jar:${platform.home}/lib/midpapi20.jar
|
||||||
platform.configuration=CLDC-1.1
|
platform.configuration=CLDC-1.1
|
||||||
platform.device=SonyEricsson_JP8_240x320_Emu
|
platform.device=SonyEricsson_JP8_240x320_Emu
|
||||||
platform.fat.jar=true
|
platform.fat.jar=true
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<type>org.netbeans.modules.kjava.j2meproject</type>
|
<type>org.netbeans.modules.kjava.j2meproject</type>
|
||||||
<configuration>
|
<configuration>
|
||||||
<data xmlns="http://www.netbeans.org/ns/j2me-project">
|
<data xmlns="http://www.netbeans.org/ns/j2me-project">
|
||||||
<name>SEPlayerService_Lite</name>
|
<name>SEPlayerService</name>
|
||||||
<minimum-ant-version>1.6</minimum-ant-version>
|
<minimum-ant-version>1.6</minimum-ant-version>
|
||||||
</data>
|
</data>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
380
src/Canv.java
380
src/Canv.java
@ -1,8 +1,11 @@
|
|||||||
|
|
||||||
import com.nokia.mid.ui.DeviceControl;
|
import com.nokia.mid.ui.DeviceControl;
|
||||||
import com.sonyericsson.multimedia.*;
|
import com.sonyericsson.multimedia.*;
|
||||||
import com.sonyericsson.multimedia.control.*;
|
import com.sonyericsson.multimedia.control.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import javax.microedition.io.Connector;
|
||||||
import javax.microedition.lcdui.*;
|
import javax.microedition.lcdui.*;
|
||||||
|
import javax.microedition.sensor.*;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To change this template, choose Tools | Templates
|
* To change this template, choose Tools | Templates
|
||||||
@ -20,10 +23,17 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
public static int softUp1, softUp2, softDn1, softDn2, background, line, text, valuet, inf;
|
public static int softUp1, softUp2, softDn1, softDn2, background, line, text, valuet, inf;
|
||||||
|
|
||||||
private int w,h;
|
private int w,h;
|
||||||
private boolean lite, vis;
|
private boolean lite;
|
||||||
private int mode;
|
private int mode;
|
||||||
|
private int accelPrevDelta = 0;
|
||||||
|
|
||||||
private Lyrics lrc;
|
private Lyrics lrc;
|
||||||
|
public RateImpl ri;
|
||||||
|
|
||||||
|
private byte repeat;//ôóíêöèÿ ïîâòîðà
|
||||||
|
private int a,b;
|
||||||
|
|
||||||
|
public Object swf;
|
||||||
|
|
||||||
private Image I, album;
|
private Image I, album;
|
||||||
private Engine2 e2;
|
private Engine2 e2;
|
||||||
@ -34,23 +44,34 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
|
|
||||||
private MultimediaService service = null;
|
private MultimediaService service = null;
|
||||||
private MediaControl mediaControl = null;
|
private MediaControl mediaControl = null;
|
||||||
private Media media = null;
|
public Media media = null;
|
||||||
|
|
||||||
|
private int[] channels = new int[3];
|
||||||
|
private String[] channelNames = new String[3];
|
||||||
|
private SensorConnection sensor;
|
||||||
|
private String URL;
|
||||||
|
|
||||||
public Canv() {
|
public Canv() {
|
||||||
setFullScreenMode(true);
|
setFullScreenMode(true);
|
||||||
thr = new Thread(this);
|
thr = new Thread(this);
|
||||||
thr.start();
|
thr.start();
|
||||||
lite = false;
|
lite = false;
|
||||||
vis = true;
|
repeat = 0;
|
||||||
mode = 0; //Ðåæèì ïëåéåðà
|
mode = 0; //Ðåæèì ïëåéåðà
|
||||||
w = getWidth();
|
w = getWidth();
|
||||||
h = getHeight();
|
h = getHeight();
|
||||||
I = Image.createImage(w, h);
|
I = Image.createImage(w, h);
|
||||||
G = I.getGraphics();
|
G = I.getGraphics();
|
||||||
|
getInfo();
|
||||||
service = MultimediaServiceManager.getMultimediaService("MediaPlayer");
|
service = MultimediaServiceManager.getMultimediaService("MediaPlayer");
|
||||||
mediaControl = (MediaControl)service.getControl("MediaControl");
|
mediaControl = (MediaControl)service.getControl("MediaControl");
|
||||||
mediaControl.addMediaControlListener(this);
|
mediaControl.addMediaControlListener(this);
|
||||||
playTrack();
|
if(Rms.visid!=0) swf = new Capuchin(Rms.visid);
|
||||||
|
if(Rms.stat) {
|
||||||
|
ri = new RateImpl();
|
||||||
|
ri.open();
|
||||||
|
}
|
||||||
|
if(Rms.startPlayer) playTrack();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void paint(Graphics g) {
|
protected void paint(Graphics g) {
|
||||||
@ -66,27 +87,42 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
if (media != null) {
|
if (media != null) {
|
||||||
MetaData metaData = media.getMetaData();
|
MetaData metaData = media.getMetaData();
|
||||||
if (metaData != null) {
|
if (metaData != null) {
|
||||||
Object data = metaData.getValue(MetaData.TITLE_KEY);
|
Object data = getValue(metaData, MetaData.TITLE_KEY);
|
||||||
if (data != null) drawTitle(g, (String) data);
|
if (data != null) drawTitle(g, (String) data);
|
||||||
|
|
||||||
if (album != null) {
|
if (album != null) {
|
||||||
int ih = h-2*medFont.getHeight()-6;
|
int ih = h-2*medFont.getHeight()-6;
|
||||||
if(album.getHeight()>ih) album = Effects.Resize(album, ih*album.getWidth()/album.getHeight(), ih);
|
if(album.getHeight()>ih) album = Effects.Resize(album, ih*album.getWidth()/album.getHeight(), ih);
|
||||||
g.drawImage(album, w/2, h/2, 3);
|
g.drawImage(album, w/2, h/2, 3);
|
||||||
}else if(vis){
|
}else if(Rms.vis){
|
||||||
if(e2==null) {
|
|
||||||
int ih = h-(2*medFont.getHeight())-6;
|
int ih = h-(2*medFont.getHeight())-6;
|
||||||
|
if(Rms.visid==0) {
|
||||||
|
if(e2==null) {
|
||||||
e2 = new Engine2(w-6, ih);
|
e2 = new Engine2(w-6, ih);
|
||||||
e2.setRun(true);
|
e2.setRun(true);
|
||||||
}
|
}
|
||||||
g.drawImage(e2.MainCanvas(), w/2, h/2, 3);
|
g.drawImage(e2.MainCanvas(), w/2, h/2, 3);
|
||||||
|
} else{
|
||||||
|
((Capuchin) swf).drawFlash(g, 3, h/2-(ih/2), w-6, ih);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(Rms.isLyric && lrc!=null) {
|
if(Rms.isLyric && lrc!=null) {
|
||||||
|
try {
|
||||||
drawCenter(g, lrc.get5Lines(media.getMediaTime()));
|
drawCenter(g, lrc.get5Lines(media.getMediaTime()));
|
||||||
|
} catch (Exception e) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
drawSoft(g, "Ìåíþ", "Âûõîä");
|
drawSoft(g, SEPS.midlet.lang.menu, SEPS.midlet.lang.exit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getValue(MetaData metaData, String md) {
|
||||||
|
String data = metaData.getValue(md);
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
for(int i=0; i<data.length(); i++) {
|
||||||
|
sb.append(StringEncoder.checkCP1251(data.charAt(i)));//.decodeCharCP1251((byte) data.charAt(i)));
|
||||||
|
}
|
||||||
|
return sb.toString();//data;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawPlayerCanvas(Graphics g) {
|
private void drawPlayerCanvas(Graphics g) {
|
||||||
@ -99,75 +135,89 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
if (media != null) {
|
if (media != null) {
|
||||||
MetaData metaData = media.getMetaData();
|
MetaData metaData = media.getMetaData();
|
||||||
if (metaData != null) {
|
if (metaData != null) {
|
||||||
Object data = metaData.getValue(MetaData.TITLE_KEY);
|
Object data = getValue(metaData, MetaData.ARTIST_KEY);
|
||||||
if (data != null) py = drawText(g, "Çàãîëîâîê: ", (String) data, py);
|
if (data != null) py = drawText(g, (String) data, py);
|
||||||
|
|
||||||
data = metaData.getValue(MetaData.ALBUM_KEY);
|
data = getValue(metaData, MetaData.TITLE_KEY);
|
||||||
if (data != null) py = drawText(g, "Àëüáîì: ", (String) data, py);
|
if (data != null) py = drawText(g, (String) data, py);
|
||||||
|
|
||||||
data = metaData.getValue(MetaData.ARTIST_KEY);
|
data = getValue(metaData, MetaData.ALBUM_KEY);
|
||||||
if (data != null) py = drawText(g, "Èñïîëíèòåëü: ", (String) data, py);
|
if (data != null) py = drawText(g, (String) data, py);
|
||||||
|
|
||||||
if(Rms.isLyric && lrc!=null) py = drawText(g, "", lrc.getLine(media.getMediaTime()), py);
|
if(Rms.isLyric && lrc!=null) py = drawText(g, lrc.getLine(media.getMediaTime()), py);
|
||||||
//else if(lrc==null) py = drawText(g, String.valueOf(media.getMediaTime()), "", py);
|
//else if(lrc==null) py = drawText(g, String.valueOf(media.getMediaTime()), "", py);
|
||||||
//data = metaData.getValue(metaData.FILE_URI_KEY);
|
//data = metaData.getValue(metaData.FILE_URI_KEY);
|
||||||
//if (data != null)
|
//if (data != null)
|
||||||
|
|
||||||
if (album != null) {
|
|
||||||
int ih = h-fh-2-py-20;
|
|
||||||
if(album.getHeight()>ih) album = Effects.Resize(album, ih*album.getWidth()/album.getHeight(), ih);
|
|
||||||
g.drawImage(album, w/2, py+15, 17);
|
|
||||||
}else if(vis){
|
|
||||||
if(e2==null) {
|
|
||||||
int ih = h-fh-2-py-20;
|
|
||||||
e2 = new Engine2(ih, ih);
|
|
||||||
e2.setRun(true);
|
|
||||||
}
|
|
||||||
g.drawImage(e2.MainCanvas(), w/2, py+15, 17);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(vis) {
|
|
||||||
g.setColor(inf);
|
|
||||||
g.drawString("Visual", 2, py+15+(smallFont_b.getHeight()+2), 20);
|
|
||||||
}
|
|
||||||
if(Rms.isLyric) {
|
|
||||||
g.setColor(inf);
|
|
||||||
g.drawString("Lyrics", 2, py+15+2*(smallFont_b.getHeight()+2), 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
float div = ((float)w - 10) / (float)media.getDuration();
|
float div = ((float)w - 10) / (float)media.getDuration();
|
||||||
g.setColor(valuet);
|
g.setColor(valuet);
|
||||||
g.fillRect(5, py, (int)(media.getMediaTime() * div), 10);
|
int mgt = media.getMediaTime();
|
||||||
|
g.fillRect(5, py, (int)(mgt * div), 10);
|
||||||
|
g.setColor(inf);
|
||||||
|
if(repeat==1) g.drawLine(5+(int)(a*div), py, 5+(int)(a*div), py+10);
|
||||||
|
if(repeat==2) {
|
||||||
|
g.drawLine((int)(a*div), py, (int)(a*div), py+10);
|
||||||
|
g.drawLine((int)(b*div), py, (int)(b*div), py+10);
|
||||||
|
}
|
||||||
g.setColor(text);
|
g.setColor(text);
|
||||||
g.drawRect(5, py, w-10, 10);
|
g.drawRect(5, py, w-10, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
drawSoft(g, "Ìåíþ", "Âûõîä");
|
if (album != null) {
|
||||||
|
int ih = h-fh-2-py-20;
|
||||||
|
if(album.getHeight()>ih) album = Effects.Resize(album, ih*album.getWidth()/album.getHeight(), ih);
|
||||||
|
g.drawImage(album, w/2, py+15, 17);
|
||||||
|
}else if(Rms.vis){
|
||||||
|
int ih = h-fh-2-py-20;
|
||||||
|
if(Rms.visid==0) {
|
||||||
|
if(e2==null) {
|
||||||
|
e2 = new Engine2(ih, ih);
|
||||||
|
e2.setRun(true);
|
||||||
|
}
|
||||||
|
g.drawImage(e2.MainCanvas(), w/2, py+15, 17);
|
||||||
|
} else{
|
||||||
|
((Capuchin) swf).drawFlash(g, w/2-ih/2, py+15, ih, ih);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.setColor(inf);
|
||||||
|
if(Rms.vis) g.drawString("*-V", 2, py+15, 20);
|
||||||
|
if(Rms.isLyric) g.drawString("0-L", 2, py+15+(smallFont_b.getHeight()+2), 20);
|
||||||
|
if(Rms.accel) g.drawString("#-A", 2, py+15+2*(smallFont_b.getHeight()+2), 20);
|
||||||
|
if(Rms.slpmode) g.drawString("S", 2, py+15+3*(smallFont_b.getHeight()+2), 20);
|
||||||
|
drawSoft(g, SEPS.midlet.lang.menu, SEPS.midlet.lang.exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void keyPressed(int key) {
|
public void keyPressed(int key) {
|
||||||
int ga=getGameAction(key);
|
int ga=getGameAction(key);
|
||||||
if(key==-7) {
|
if(key==-7) {
|
||||||
pauseTrack();
|
if(Rms.closePlayer) pauseTrack();
|
||||||
SEPS.midlet.destroyApp(true);
|
SEPS.midlet.destroyApp(true);
|
||||||
}
|
}
|
||||||
if(key==-6) new Menu();
|
if(key==-6) new Menu();
|
||||||
if(key==KEY_STAR) vis=!vis;
|
if(key==KEY_POUND) Rms.accel=!Rms.accel;
|
||||||
|
if(key==KEY_STAR) Rms.vis=!Rms.vis;
|
||||||
if(key==KEY_NUM0) Rms.isLyric=!Rms.isLyric;
|
if(key==KEY_NUM0) Rms.isLyric=!Rms.isLyric;
|
||||||
if(key==KEY_NUM1) rewind();
|
if(key==KEY_NUM4) rewind();
|
||||||
if(key==KEY_NUM3) fastForward();
|
if(key==KEY_NUM6) fastForward();
|
||||||
|
if(key==KEY_NUM3) ABRepeat();
|
||||||
|
if(key==KEY_NUM1) {
|
||||||
|
String art="",tit="";
|
||||||
|
try{
|
||||||
|
MetaData metaData = SEPS.midlet.cnv.media.getMetaData();
|
||||||
|
tit = getValue(metaData, MetaData.TITLE_KEY);
|
||||||
|
art = getValue(metaData, MetaData.ARTIST_KEY);
|
||||||
|
}catch(Exception ex){}
|
||||||
|
FindLyrics fl = new FindLyrics();
|
||||||
|
fl.find(art, tit);//SEPS.midlet.dsp.setCurrent(SEPS.midlet.cnv);
|
||||||
|
}
|
||||||
|
if(key==KEY_NUM9) new SetSleepMode();//SEPS.midlet.dsp.setCurrent();
|
||||||
|
if(ga==LEFT && key!=KEY_NUM4) prevTrack();
|
||||||
|
if(ga==RIGHT && key!=KEY_NUM6) nextTrack();
|
||||||
switch(ga) {
|
switch(ga) {
|
||||||
case LEFT:
|
|
||||||
prevTrack();
|
|
||||||
break;
|
|
||||||
case RIGHT:
|
|
||||||
nextTrack();
|
|
||||||
break;
|
|
||||||
case UP:
|
case UP:
|
||||||
upMode();
|
upMode();
|
||||||
break;
|
break;
|
||||||
case DOWN:
|
case DOWN:
|
||||||
downMode();
|
upMode();
|
||||||
break;
|
break;
|
||||||
case FIRE:
|
case FIRE:
|
||||||
try {
|
try {
|
||||||
@ -184,11 +234,120 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
keyPressed(key);
|
keyPressed(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getDelta(int channel, int threshold) {
|
||||||
|
int delta = 0;
|
||||||
|
try {
|
||||||
|
Data[] data = sensor.getData(1, -1, false, false, false);
|
||||||
|
int drx = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < data.length; i++) {
|
||||||
|
if (data[i].getChannelInfo().getName().equals(channelNames[channel])) {
|
||||||
|
drx = data[i].getIntValues()[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delta = channels[channel] - drx;
|
||||||
|
channels[channel] = drx;
|
||||||
|
|
||||||
|
if (Math.abs(delta) < threshold) {
|
||||||
|
delta = 0;
|
||||||
|
}
|
||||||
|
} catch (Throwable t) {
|
||||||
|
}
|
||||||
|
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
if(Rms.light) DeviceControl.setLights(0, 100);
|
if(Rms.light) DeviceControl.setLights(0, 100);
|
||||||
if(!vis) Thread.sleep(100);
|
final int delta = getDelta(0, Rms.sensetivity);
|
||||||
|
if (delta != 0) {
|
||||||
|
if (accelPrevDelta != 0 && (delta * accelPrevDelta) < 0) {
|
||||||
|
accelPrevDelta = 0;
|
||||||
|
} else {
|
||||||
|
accelPrevDelta = delta;
|
||||||
|
|
||||||
|
Runnable runnable = new Runnable() {
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
if (delta > 0 && Rms.accel) {
|
||||||
|
nextTrack();
|
||||||
|
} else if (delta < 0 && Rms.accel) {
|
||||||
|
if(Rms.listfw) nextTrack();
|
||||||
|
else prevTrack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
(new Thread(runnable)).start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!Rms.vis) Thread.sleep(100);
|
||||||
|
if(Rms.slpmode) {
|
||||||
|
if(getTime()) {
|
||||||
|
pauseTrack();
|
||||||
|
SEPS.midlet.destroyApp(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(repeat==2) {
|
||||||
|
try {
|
||||||
|
int mgt = media.getMediaTime();
|
||||||
|
int sk = Math.abs(b-a);
|
||||||
|
if(mgt>=b) mediaControl.skip(-sk);
|
||||||
|
} catch (ControlException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if((Rms.stat || Rms.urlstat || Rms.actmenu) && media!=null) {
|
||||||
|
MetaData metaData = media.getMetaData();
|
||||||
|
Object data = getValue(metaData, MetaData.ARTIST_KEY);
|
||||||
|
String thisSong = (String) data;
|
||||||
|
data = getValue(metaData, MetaData.TITLE_KEY);
|
||||||
|
thisSong = thisSong+" - "+ (String) data;
|
||||||
|
if(!thisSong.equalsIgnoreCase(Rms.lastSong)) {
|
||||||
|
int thisTime = media.getMediaTime();
|
||||||
|
int allTime = media.getDuration()*20/*% ïðîèãðàíî*//100;
|
||||||
|
if(thisTime>allTime) {
|
||||||
|
int cn = 1;
|
||||||
|
if(Rms.stat) {
|
||||||
|
Rms.lastSong = thisSong;
|
||||||
|
cn = ri.update(thisSong);
|
||||||
|
}
|
||||||
|
if(Rms.urlstat) {
|
||||||
|
FindLyrics fl = new FindLyrics();
|
||||||
|
fl.scrob(thisSong);
|
||||||
|
Rms.lastSong = thisSong;
|
||||||
|
}
|
||||||
|
if(Rms.actmenu) {
|
||||||
|
try {
|
||||||
|
Image icon = Image.createImage("/icon.png");
|
||||||
|
StringBuffer sb = new StringBuffer();//String desc = "";
|
||||||
|
if(Rms.stat) { sb.append(cn); sb.append(" |");}
|
||||||
|
allTime = media.getDuration();
|
||||||
|
int hh = 0, m=0, s = 0;
|
||||||
|
if(allTime<60) s=allTime;
|
||||||
|
else {
|
||||||
|
if(allTime<3600) {
|
||||||
|
m = allTime/60;
|
||||||
|
s = allTime - m*60;
|
||||||
|
}else{
|
||||||
|
m = allTime/60;
|
||||||
|
hh = m/60; m=m-hh*60;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(hh>0) {sb.append(hh); sb.append(" :");}
|
||||||
|
if(m>0) {if(m>10) sb.append(0); sb.append(m); sb.append(" :");}
|
||||||
|
if(s>10) sb.append(0);
|
||||||
|
sb.append(s);
|
||||||
|
com.sonyericsson.ui.UIActivityMenu.getInstance(SEPS.midlet).addEvent(thisSong, sb.toString(), icon, null);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (service != null) {
|
if (service != null) {
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
@ -198,6 +357,36 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ïåðåêëþ÷åíèå òðåêà
|
||||||
|
*/
|
||||||
|
private void newTrack() {
|
||||||
|
a=b=0; repeat = 0;
|
||||||
|
SEPS.midlet.dsp.vibrate(Rms.vibrlen);
|
||||||
|
if (Rms.flash) {
|
||||||
|
DeviceControl.setLights(0, 0);
|
||||||
|
DeviceControl.setLights(0, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void getInfo() {
|
||||||
|
SensorInfo[] info = SensorManager.findSensors("acceleration", null);
|
||||||
|
for (int i = 0; i < info.length; i++) {
|
||||||
|
SensorInfo s = info[i];
|
||||||
|
URL = s.getUrl();
|
||||||
|
ChannelInfo[] ci = s.getChannelInfos();
|
||||||
|
for (int r = 0; r < ci.length; r++) {
|
||||||
|
ChannelInfo c = ci[r];
|
||||||
|
channelNames[r] = c.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
sensor = (SensorConnection) Connector.open(URL);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void initLyric(Media med) {
|
private void initLyric(Media med) {
|
||||||
if (med == null) {return;}
|
if (med == null) {return;}
|
||||||
lrc = null;
|
lrc = null;
|
||||||
@ -205,13 +394,13 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
String fl = "";
|
String fl = "";
|
||||||
MetaData metaData = med.getMetaData();
|
MetaData metaData = med.getMetaData();
|
||||||
if (metaData != null) {
|
if (metaData != null) {
|
||||||
Object data = metaData.getValue(MetaData.ARTIST_KEY);
|
Object data = getValue(metaData, MetaData.ARTIST_KEY);
|
||||||
if (data != null) at=at +(String)(data) + " - ";
|
if (data != null) at=at +(String)(data) + " - ";
|
||||||
|
|
||||||
data = metaData.getValue(MetaData.TITLE_KEY);
|
data = getValue(metaData, MetaData.TITLE_KEY);
|
||||||
if (data != null) at+=(String) data;
|
if (data != null) at+=(String) data;
|
||||||
|
|
||||||
data = metaData.getValue(MetaData.FILE_URI_KEY);
|
data = getValue(metaData, MetaData.FILE_URI_KEY);
|
||||||
if (data != null) {fl=(String) data;fl=fl.substring(fl.lastIndexOf('/')+1, fl.lastIndexOf('.'));}
|
if (data != null) {fl=(String) data;fl=fl.substring(fl.lastIndexOf('/')+1, fl.lastIndexOf('.'));}
|
||||||
|
|
||||||
if(Lyrics.isExists(at)) lrc = new Lyrics(at);
|
if(Lyrics.isExists(at)) lrc = new Lyrics(at);
|
||||||
@ -221,6 +410,7 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
|
|
||||||
private void nextTrack() {
|
private void nextTrack() {
|
||||||
try {
|
try {
|
||||||
|
newTrack();
|
||||||
mediaControl.next();
|
mediaControl.next();
|
||||||
} catch (ControlException ex) {
|
} catch (ControlException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
@ -229,6 +419,7 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
|
|
||||||
private void prevTrack() {
|
private void prevTrack() {
|
||||||
try {
|
try {
|
||||||
|
newTrack();
|
||||||
mediaControl.prev();
|
mediaControl.prev();
|
||||||
} catch (ControlException ex) {
|
} catch (ControlException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
@ -267,31 +458,13 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// public static String getTime(int mode) {
|
private boolean getTime() {
|
||||||
// String dd, mm, yy, _h, m, s;
|
Calendar cal = Calendar.getInstance ();
|
||||||
// Calendar cal = Calendar.getInstance ();
|
int ch = cal.get(Calendar.HOUR_OF_DAY);
|
||||||
// dd = String.valueOf (cal.get (Calendar.DAY_OF_MONTH));
|
int cm = cal.get(Calendar.MINUTE);
|
||||||
// if (dd.length () == 1)
|
if(ch!=Rms.dh) return false;
|
||||||
// dd = "0" + dd;
|
else return (cm>=Rms.dm);
|
||||||
// mm = String.valueOf (cal.get (Calendar.MONTH) + 1);
|
}
|
||||||
// if (mm.length () == 1)
|
|
||||||
// mm = "0" + mm;
|
|
||||||
// yy = String.valueOf (cal.get (Calendar.YEAR));
|
|
||||||
// _h = String.valueOf (cal.get (Calendar.HOUR_OF_DAY));
|
|
||||||
// if (_h.length () == 1)
|
|
||||||
// _h = "0" + _h;
|
|
||||||
// m = String.valueOf (cal.get (Calendar.MINUTE));
|
|
||||||
// if (m.length () == 1)
|
|
||||||
// m = "0" + m;
|
|
||||||
// s = String.valueOf (cal.get (Calendar.SECOND));
|
|
||||||
// if (s.length () == 1)
|
|
||||||
// s = "0" + s;
|
|
||||||
// String time;
|
|
||||||
// if(mode==1) time = _h+":"+m+":"+s;
|
|
||||||
// else if(mode==2) time = (dd+"."+mm+"."+yy.substring(2));
|
|
||||||
// else time = (dd+"."+mm+"."+yy.substring(2)+" "+_h+":"+m+":"+s);
|
|
||||||
// return time;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void mediaControlUpdate(int eventId, ControlEvent event) {
|
public void mediaControlUpdate(int eventId, ControlEvent event) {
|
||||||
try {
|
try {
|
||||||
@ -321,6 +494,7 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
album = null;
|
album = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
a = b = 0; repeat = 0;
|
||||||
if(Rms.isLyric) initLyric(this.media);
|
if(Rms.isLyric) initLyric(this.media);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
t.printStackTrace();
|
t.printStackTrace();
|
||||||
@ -411,23 +585,15 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private int drawText(Graphics g, String name, String value, int y) {
|
private int drawText(Graphics g, String value, int y) {
|
||||||
g.setColor(line);
|
g.setColor(line);
|
||||||
g.drawLine(3, y-1, w-3, y-1);
|
g.drawLine(3, y-1, w-3, y-1);
|
||||||
|
|
||||||
if(Rms.skinid==3) {value=toEmo(value); name=toEmo(name);}
|
if(Rms.skinid==3) {value=toEmo(value);}
|
||||||
|
|
||||||
g.setColor(text);
|
|
||||||
g.setFont(smallFont_b);
|
|
||||||
g.drawString(name, 5, y, 20);
|
|
||||||
|
|
||||||
int tw = 15+smallFont_b.stringWidth(name);
|
|
||||||
g.setColor(valuet);
|
g.setColor(valuet);
|
||||||
if(smallFont_b.stringWidth(value)>tw) {
|
g.setFont(smallFont_b);
|
||||||
g.translate(tw-10, g.getTranslateY());
|
g.drawString(value, w/2, y, 17);
|
||||||
g.drawString(value, 2, y, 20);
|
|
||||||
g.translate(-(tw-10), -g.getTranslateY());
|
|
||||||
}else g.drawString(value, w-5, y, 24);
|
|
||||||
|
|
||||||
return y+(smallFont_b.getHeight()+2);
|
return y+(smallFont_b.getHeight()+2);
|
||||||
}
|
}
|
||||||
@ -447,15 +613,31 @@ public class Canv extends Canvas implements Runnable, MediaControlListener {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void downMode() {
|
|
||||||
mode = 1-mode;
|
|
||||||
e2=null;
|
|
||||||
album = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void upMode() {
|
private void upMode() {
|
||||||
mode = 1-mode;
|
mode = 1-mode;
|
||||||
e2=null;
|
e2=null;
|
||||||
album = null;
|
album = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ABRepeat() {
|
||||||
|
try {
|
||||||
|
repeat++;
|
||||||
|
switch (repeat) {
|
||||||
|
case 1: // ñòàâèì A
|
||||||
|
a = media.getMediaTime();
|
||||||
|
break;
|
||||||
|
case 2: // ñòàâèì B
|
||||||
|
b = media.getMediaTime();
|
||||||
|
if(a>b) {
|
||||||
|
int t = b; b=a; a=t;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: // êîíåö ïîâòîðà
|
||||||
|
a = b = 0;
|
||||||
|
repeat = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
37
src/Capuchin.java
Normal file
37
src/Capuchin.java
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
import com.sonyericsson.capuchin.*;
|
||||||
|
import javax.microedition.lcdui.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class Capuchin {
|
||||||
|
|
||||||
|
//public FlashPlayer flashPlayer;
|
||||||
|
public FlashImage flashImage;
|
||||||
|
//public FlashCanvas flashCanvas;
|
||||||
|
|
||||||
|
public Capuchin(int i) {
|
||||||
|
// flashPlayer = null;
|
||||||
|
flashImage = null;
|
||||||
|
// flashCanvas = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
flashImage = FlashImage.createImage(getClass().getResourceAsStream("/"+String.valueOf(i)+".swf"), null);
|
||||||
|
// if(flashImage != null)
|
||||||
|
// {
|
||||||
|
// flashCanvas = new FlashCanvas(flashImage);
|
||||||
|
// flashPlayer = FlashPlayer.createFlashPlayer(flashImage, flashCanvas);
|
||||||
|
// flashCanvas.setFullScreenMode(true);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
catch(Exception ex) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawFlash(Graphics g, int x, int y, int w, int h) {
|
||||||
|
if(flashImage!=null) flashImage.render(g, x, y, w, h);
|
||||||
|
}
|
||||||
|
}
|
142
src/FindLyrics.java
Normal file
142
src/FindLyrics.java
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import javax.microedition.io.*;
|
||||||
|
import javax.microedition.io.file.FileConnection;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class FindLyrics {
|
||||||
|
|
||||||
|
String MSG;
|
||||||
|
|
||||||
|
public FindLyrics() {
|
||||||
|
|
||||||
|
}
|
||||||
|
public boolean find(String artist, String title) {
|
||||||
|
MSG = "";
|
||||||
|
String url = "http://www.lyricsplugin.com/winamp03/plugin/?artist="+urlName(artist)+"&title="+urlName(title);
|
||||||
|
try {
|
||||||
|
byte[] res = send(url);
|
||||||
|
int lr1 = MSG.indexOf("<div id="+'"'+"lyrics"+'"'+">");
|
||||||
|
int lr2 = MSG.indexOf("</div>", lr1);
|
||||||
|
if((lr2-lr1)>30) {
|
||||||
|
FileConnection fc;
|
||||||
|
fc = (FileConnection) Connector.open("file:///" + Rms.lrcpath+artist+" - "+title+".html");
|
||||||
|
if(fc.exists()) fc.delete();
|
||||||
|
fc.create();
|
||||||
|
OutputStream os = fc.openOutputStream();
|
||||||
|
os.write(res);
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
fc.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void scrob(String song) {
|
||||||
|
String artist = song.substring(0, song.lastIndexOf('-')).trim();
|
||||||
|
String title = song.substring(song.lastIndexOf('-')+1).trim();
|
||||||
|
MSG = "";
|
||||||
|
String url = "http://annimon.z83.ru/nowplaying.php?id="+Rms.id+"&a="+urlName(artist)+"&t="+urlName(title);
|
||||||
|
try {
|
||||||
|
send(url);
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] send(String url) throws Exception {
|
||||||
|
HttpConnection hc = null;
|
||||||
|
InputStream is = null;
|
||||||
|
byte[] res = null;
|
||||||
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
try {
|
||||||
|
hc = (HttpConnection) Connector.open(url);
|
||||||
|
int ch;
|
||||||
|
is = hc.openInputStream();
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
while ((ch = is.read()) != -1) {
|
||||||
|
sb.append(StringEncoder.decodeCharCP1251((byte)ch));
|
||||||
|
bos.write(ch);
|
||||||
|
}
|
||||||
|
MSG = sb.toString();
|
||||||
|
res = bos.toByteArray();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (bos != null) bos.close();
|
||||||
|
if (is != null) is.close();
|
||||||
|
if (hc != null) hc.close();
|
||||||
|
} catch (Exception e2) {
|
||||||
|
e2.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String urlName(String url) {
|
||||||
|
if (url == null) return null;
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
for (int i = 0; i < url.length(); i++) {
|
||||||
|
char ch = url.charAt(i);
|
||||||
|
switch (ch) {
|
||||||
|
default:
|
||||||
|
if (ch < '\200') {
|
||||||
|
sb.append(ch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ch > '\177' && ch < '\u0800') {
|
||||||
|
sb.append('%');
|
||||||
|
sb.append(Integer.toHexString((ch >> 6 | 0xc0) + 256).substring(1));
|
||||||
|
sb.append('%');
|
||||||
|
sb.append(Integer.toHexString((ch & 0x3f | 0x80) + 256).substring(1));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ch > '\u07FF' && ch < '\0') {
|
||||||
|
sb.append('%');
|
||||||
|
sb.append(Integer.toHexString((ch >> 12 | 0xe0) + 256).substring(1));
|
||||||
|
sb.append('%');
|
||||||
|
sb.append(Integer.toHexString((ch >> 6 & 0x3f | 0x80) + 256).substring(1));
|
||||||
|
sb.append('%');
|
||||||
|
sb.append(Integer.toHexString((ch & 0x3f | 0x80) + 256).substring(1));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0: //'\0'
|
||||||
|
case 32: sb.append("%20"); break;// ' '
|
||||||
|
case 61: sb.append("%3d"); break;// '='
|
||||||
|
case 43: sb.append("%2b"); break;// '+'
|
||||||
|
case 39: sb.append("%27"); break;// '\''
|
||||||
|
case 46: sb.append("%2E"); break;// '.'
|
||||||
|
case 60: sb.append("%3c"); break;// '<'
|
||||||
|
case 62: sb.append("%3e"); break;// '>'
|
||||||
|
case 35: sb.append("%23"); break;// '#'
|
||||||
|
case 37: sb.append("%25"); break;// '%'
|
||||||
|
case 38: sb.append("%26"); break;// '&'
|
||||||
|
case 123:sb.append("%7b"); break;// '{'
|
||||||
|
case 125:sb.append("%7d"); break;// '}'
|
||||||
|
case 92: sb.append("%5c"); break;// '\\'
|
||||||
|
case 94: sb.append("%5e"); break;// '^'
|
||||||
|
case 126:sb.append("%73"); break;// '~'
|
||||||
|
case 91: sb.append("%5b"); break;// '['
|
||||||
|
case 93: sb.append("%5d"); break;// ']'
|
||||||
|
case 58: sb.append("%3A"); break;// ':'
|
||||||
|
case 47: sb.append("%2F"); break;// '/'
|
||||||
|
case 63: sb.append("%3F"); break;// '?'
|
||||||
|
case 45: sb.append("%2D"); break;// '-'
|
||||||
|
case 33: sb.append("%21"); break;// '!'
|
||||||
|
case 59: sb.append("%3B"); break;// ';'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
57
src/FindText.java
Normal file
57
src/FindText.java
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
import com.sonyericsson.multimedia.MetaData;
|
||||||
|
import javax.microedition.lcdui.*;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class FindText extends Form implements CommandListener {
|
||||||
|
|
||||||
|
private Command back, ok;
|
||||||
|
public TextField artist, title;
|
||||||
|
|
||||||
|
public FindText() {
|
||||||
|
super(SEPS.midlet.lang.findtext);
|
||||||
|
back = new Command(SEPS.midlet.lang.back, Command.BACK, 2);
|
||||||
|
ok = new Command(SEPS.midlet.lang.ok, Command.OK, 1);
|
||||||
|
String ar="",ti="";
|
||||||
|
try{
|
||||||
|
MetaData metaData = SEPS.midlet.cnv.media.getMetaData();
|
||||||
|
ti = getValue(metaData, MetaData.TITLE_KEY);
|
||||||
|
ar = getValue(metaData, MetaData.ARTIST_KEY);
|
||||||
|
}catch(Exception ex){}
|
||||||
|
artist = new TextField(SEPS.midlet.lang.artist, ar, 255, TextField.ANY);
|
||||||
|
title = new TextField(SEPS.midlet.lang.title, ti, 255, TextField.ANY);
|
||||||
|
append(artist);
|
||||||
|
append(title);
|
||||||
|
addCommand(ok);
|
||||||
|
addCommand(back);
|
||||||
|
setCommandListener(this);
|
||||||
|
SEPS.midlet.dsp.setCurrent(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getValue(MetaData metaData, String md) {
|
||||||
|
String data = metaData.getValue(md);
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
for(int i=0; i<data.length(); i++) {
|
||||||
|
sb.append(StringEncoder.checkCP1251(data.charAt(i)));//.decodeCharCP1251((byte) data.charAt(i)));
|
||||||
|
}
|
||||||
|
return sb.toString();//data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void commandAction(Command c, Displayable d) {
|
||||||
|
if (c == back) new Menu();
|
||||||
|
|
||||||
|
if (c == ok) {
|
||||||
|
FindLyrics fl = new FindLyrics();
|
||||||
|
boolean check = fl.find(artist.getString(), title.getString());//SEPS.midlet.dsp.setCurrent(SEPS.midlet.cnv);
|
||||||
|
if(check) append(SEPS.midlet.lang.textsaving);
|
||||||
|
else append(SEPS.midlet.lang.nofound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -12,18 +12,23 @@ import javax.microedition.lcdui.*;
|
|||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public class Info extends Form implements CommandListener {
|
public class Info extends Form implements CommandListener {
|
||||||
private Command back = new Command("Íàçàä", Command.BACK, 1);
|
private Command back = new Command(SEPS.midlet.lang.back, Command.BACK, 1);
|
||||||
private StringItem Text;
|
private StringItem Text;
|
||||||
private Command site = new Command("Íà ñàéò", Command.HELP, 2);
|
private Command site = new Command(SEPS.midlet.lang.site, Command.HELP, 2);
|
||||||
|
private Command scrob = new Command(SEPS.midlet.lang.scrobdb, Command.HELP, 3);
|
||||||
|
|
||||||
|
|
||||||
public Info() {
|
public Info() {
|
||||||
super("Î ïðîãðàììå");
|
super(SEPS.midlet.lang.about);
|
||||||
String str = getText("/about");
|
String str = getText("/about");
|
||||||
Text = new StringItem(null, str);
|
Text = new StringItem(null, str);
|
||||||
append(Text);
|
append(Text);
|
||||||
addCommand(site);
|
addCommand(site);
|
||||||
addCommand(back);
|
addCommand(back);
|
||||||
|
if(Rms.urlstat) {
|
||||||
|
addCommand(scrob);
|
||||||
|
append("ID="+Rms.id);
|
||||||
|
}
|
||||||
setCommandListener(this);
|
setCommandListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,13 +36,23 @@ public class Info extends Form implements CommandListener {
|
|||||||
if(c==back) new Menu();
|
if(c==back) new Menu();
|
||||||
if(c==site) {
|
if(c==site) {
|
||||||
try {
|
try {
|
||||||
String url = "http://annimon.wen.ru/";
|
String scr = "";
|
||||||
|
if(Rms.id!=0) scr="annimon.z83.ru/seps/"+String.valueOf(Rms.id)+".txt";
|
||||||
|
String url = "http://annimon.z83.ru/";
|
||||||
if(url.length()!=22) return;
|
if(url.length()!=22) return;
|
||||||
SEPS.midlet.platformRequest(url);
|
SEPS.midlet.platformRequest(url);
|
||||||
} catch (ConnectionNotFoundException ex) {
|
} catch (ConnectionNotFoundException ex) {
|
||||||
new Menu();
|
new Menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(c==scrob) {
|
||||||
|
try {
|
||||||
|
String url = "http://annimon.z83.ru/seps/"+String.valueOf(Rms.id)+".txt";
|
||||||
|
SEPS.midlet.platformRequest(url);
|
||||||
|
} catch (ConnectionNotFoundException ex) {
|
||||||
|
new Menu();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getText(String path) {
|
private String getText(String path) {
|
||||||
@ -46,7 +61,7 @@ public class Info extends Form implements CommandListener {
|
|||||||
int ch = 0;
|
int ch = 0;
|
||||||
try {
|
try {
|
||||||
while ((ch = dis.read()) != -1) {
|
while ((ch = dis.read()) != -1) {
|
||||||
strBuff.append((char) ((ch >= 0xc0 && ch <= 0xFF) ? (ch + 0x350) : ch));
|
strBuff.append(StringEncoder.decodeCharCP1251((byte)ch));
|
||||||
}
|
}
|
||||||
dis.close();
|
dis.close();
|
||||||
} catch (Exception e) {e.printStackTrace();}
|
} catch (Exception e) {e.printStackTrace();}
|
||||||
|
97
src/Lang.java
Normal file
97
src/Lang.java
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class Lang {
|
||||||
|
|
||||||
|
String menu, back, exit, ok, findtext, artist, title, textsaving, nofound;
|
||||||
|
String site, scrobdb, about, sreturn, sleepmode, options, minimise;
|
||||||
|
String sensetivity, textfolder, vibro, skin, visual, origseps, elements,
|
||||||
|
gothic, emo,light, start, stop, flashlight, tooff,
|
||||||
|
statlocal, scrobbling, origjava, circles, uiactivity, listforward;
|
||||||
|
|
||||||
|
public Lang(int id) {
|
||||||
|
if(id==0) {
|
||||||
|
menu = "Menu";
|
||||||
|
back = "Back";
|
||||||
|
exit = "Exit";
|
||||||
|
ok = "Ok";
|
||||||
|
findtext = "Text Search";
|
||||||
|
artist = "Artist";
|
||||||
|
title = "Title";
|
||||||
|
textsaving = "Text saved\n";
|
||||||
|
nofound = "Not found\n";
|
||||||
|
site = "Site";
|
||||||
|
scrobdb = "Scrobbling info";
|
||||||
|
about = "About";
|
||||||
|
sreturn = "Return";
|
||||||
|
sleepmode = "Sleep Mode";
|
||||||
|
options = "Options";
|
||||||
|
minimise = "Minimise";
|
||||||
|
sensetivity = "Sensetivity to switch:";
|
||||||
|
textfolder = "Folder with the text:";
|
||||||
|
vibro = "Vibration switch (in ms):";
|
||||||
|
skin = "Skins";
|
||||||
|
visual = "Visualization";
|
||||||
|
origseps = "Original SEPS";
|
||||||
|
gothic = "Gothic";
|
||||||
|
emo = "Emo";
|
||||||
|
light = "Backlight";
|
||||||
|
start = "Launch player when program start";
|
||||||
|
stop = "Close player when program exit";
|
||||||
|
flashlight = "Flash backlight";
|
||||||
|
statlocal = "Statistics (need to restart app)";
|
||||||
|
scrobbling = "Scrobbling (annimon.z83.ru)";
|
||||||
|
origjava = "Original Java";
|
||||||
|
circles = "Circles (1.swf)";
|
||||||
|
elements = "Elements: ";
|
||||||
|
tooff = "Time to turn off (in minutes):";
|
||||||
|
uiactivity = "Sync. with ActivityMenu";
|
||||||
|
listforward = "List Forward";
|
||||||
|
}else{
|
||||||
|
menu = "Ìåíþ";
|
||||||
|
back = "Íàçàä";
|
||||||
|
exit = "Âûõîä";
|
||||||
|
ok = "Ok";
|
||||||
|
findtext = "Ïîèñê òåêñòîâ";
|
||||||
|
artist = "Èñïîëíèòåëü";
|
||||||
|
title = "Çàãîëîâîê";
|
||||||
|
textsaving = "Òåêñò ñîõðàíåí\n";
|
||||||
|
nofound = "Íå íàéäåíî\n";
|
||||||
|
site = "Íà ñàéò";
|
||||||
|
scrobdb = "Äàííûå ñêðîááëèíãà";
|
||||||
|
about = "Î ïðîãðàììå";
|
||||||
|
sreturn = "Âåðíóòüñÿ";
|
||||||
|
sleepmode = "Ñïÿùèé ðåæèì";
|
||||||
|
options = "Íàñòðîéêè";
|
||||||
|
minimise = "Ñâåðíóòü";
|
||||||
|
sensetivity = "×óâñòâèòåëüíîñòü ê ïåðåêëþ÷åíèþ:";
|
||||||
|
textfolder = "Ïàïêà ñ òåêñòàìè:";
|
||||||
|
vibro = "Âèáðàöèÿ ïðè ïåðåêëþ÷åíèè (â ìñ):";
|
||||||
|
skin = "Ñêèíû";
|
||||||
|
visual = "Âèçóàëèçàöèè";
|
||||||
|
origseps = "Ñòàíäàðòíûé SEPS";
|
||||||
|
gothic = "Ãîòè÷åñêèé";
|
||||||
|
emo = "Ýìî";
|
||||||
|
light = "Ïîñòîÿííàÿ ïîäñâåòêà";
|
||||||
|
start = "Çàïóñêàòü ïëåéåð ïðè ñòàðòå ïðîãðàììû";
|
||||||
|
stop = "Çàêðûâàòü ïëåéåð ïðè âûõîäå èç ïðîãðàììû";
|
||||||
|
flashlight = "Ìèãàíèå ïîäñâåòêîé";
|
||||||
|
statlocal = "Âåñòè ñòàòèñòèêó (íåîáõîäèì ïåðåçàïóñê)";
|
||||||
|
scrobbling = "Ñêðîááëèíã";
|
||||||
|
origjava = "Ñòàíäàðòíûé Java";
|
||||||
|
circles = "Êðóãè (1.swf)";
|
||||||
|
elements = "Âñåãî ýëåìåíòîâ: ";
|
||||||
|
tooff = "Âðÿìÿ äî âûêëþ÷åíèÿ (â ìèíóòàõ):";
|
||||||
|
uiactivity = "Ñèíõð. ñ Ìåíþ Ñîáûòèé";
|
||||||
|
listforward = "Ëèñòàòü âïåðåä";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -87,7 +87,7 @@ public class Lyrics {
|
|||||||
|
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
while ((ch = is.read()) != -1) {
|
while ((ch = is.read()) != -1) {
|
||||||
sb.append((char) ((ch >= 0xc0 && ch <= 0xFF) ? (ch + 0x350) : ch));
|
sb.append(StringEncoder.decodeCharCP1251((byte)ch));
|
||||||
}
|
}
|
||||||
is.close();
|
is.close();
|
||||||
fc.close();
|
fc.close();
|
||||||
@ -108,6 +108,7 @@ public class Lyrics {
|
|||||||
{
|
{
|
||||||
Vector v = new Vector();
|
Vector v = new Vector();
|
||||||
char c = '\n';
|
char c = '\n';
|
||||||
|
for(int i=0; i<=5; i++) {text=("[00:00.00] \n")+text+("[999:00.00] \n");}
|
||||||
int j = text.length();
|
int j = text.length();
|
||||||
String s2 = "";
|
String s2 = "";
|
||||||
for(int k = 0; k < j; k++)
|
for(int k = 0; k < j; k++)
|
||||||
@ -115,7 +116,7 @@ public class Lyrics {
|
|||||||
int i = text.charAt(k);
|
int i = text.charAt(k);
|
||||||
if(i == c)
|
if(i == c)
|
||||||
{
|
{
|
||||||
if(s2.length() > 0)
|
if(s2.length() > 0 && s2.startsWith("["))
|
||||||
{
|
{
|
||||||
if(time && isNumChar(s2.charAt(1))) v.addElement(s2.substring(0, s2.indexOf(']')+1).trim());
|
if(time && isNumChar(s2.charAt(1))) v.addElement(s2.substring(0, s2.indexOf(']')+1).trim());
|
||||||
else if(isNumChar(s2.charAt(1))) v.addElement(s2.substring(s2.lastIndexOf(']')+1).trim());
|
else if(isNumChar(s2.charAt(1))) v.addElement(s2.substring(s2.lastIndexOf(']')+1).trim());
|
||||||
@ -126,7 +127,7 @@ public class Lyrics {
|
|||||||
s2 = s2 + String.valueOf((char)i);
|
s2 = s2 + String.valueOf((char)i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(s2.length() > 0) {
|
if(s2.length() > 0 && s2.startsWith("[")) {
|
||||||
if(time && isNumChar(s2.charAt(1))) v.addElement(s2.substring(0, s2.indexOf(']')+1).trim());
|
if(time && isNumChar(s2.charAt(1))) v.addElement(s2.substring(0, s2.indexOf(']')+1).trim());
|
||||||
else if(isNumChar(s2.charAt(1))) v.addElement(s2.substring(s2.lastIndexOf(']')+1).trim());
|
else if(isNumChar(s2.charAt(1))) v.addElement(s2.substring(s2.lastIndexOf(']')+1).trim());
|
||||||
}
|
}
|
||||||
@ -174,7 +175,7 @@ public class Lyrics {
|
|||||||
* Ïðåîáðàçîâûâàåò âñå íåèíòåðíåò ññûëêè â íîðìàëüíûå, íàïðèìåð óáèðàÿ ïðîáåëû èëè ëèøíèå ñèìâîëû.
|
* Ïðåîáðàçîâûâàåò âñå íåèíòåðíåò ññûëêè â íîðìàëüíûå, íàïðèìåð óáèðàÿ ïðîáåëû èëè ëèøíèå ñèìâîëû.
|
||||||
* @param url - èñõîäíûé àäðåñ
|
* @param url - èñõîäíûé àäðåñ
|
||||||
* @return - ïðàâèëüíûé àäðåñ íà âûõîäå
|
* @return - ïðàâèëüíûé àäðåñ íà âûõîäå
|
||||||
*/
|
|
||||||
private String urlName(String url) {
|
private String urlName(String url) {
|
||||||
if (url == null) return null;
|
if (url == null) return null;
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
@ -229,5 +230,5 @@ public class Lyrics {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ public class Menu implements CommandListener {
|
|||||||
private Display dsp;
|
private Display dsp;
|
||||||
|
|
||||||
public Menu() {
|
public Menu() {
|
||||||
String[] m = new String[] {"Âåðíóòüñÿ", "Íàñòðîéêè", "Î ïðîãðàììå", "Ñâåðíóòü", "Âûõîä"};
|
String[] m = new String[] {SEPS.midlet.lang.sreturn, SEPS.midlet.lang.sleepmode,
|
||||||
ls = new List("Ìåíþ", List.IMPLICIT, m, null);
|
SEPS.midlet.lang.findtext, SEPS.midlet.lang.options, SEPS.midlet.lang.about,
|
||||||
|
SEPS.midlet.lang.minimise, SEPS.midlet.lang.exit};
|
||||||
|
ls = new List(SEPS.midlet.lang.menu, List.IMPLICIT, m, null);
|
||||||
ls.setCommandListener(this);
|
ls.setCommandListener(this);
|
||||||
dsp = SEPS.midlet.dsp;
|
dsp = SEPS.midlet.dsp;
|
||||||
dsp.setCurrent(ls);
|
dsp.setCurrent(ls);
|
||||||
@ -27,10 +29,12 @@ public class Menu implements CommandListener {
|
|||||||
int i = ls.getSelectedIndex();
|
int i = ls.getSelectedIndex();
|
||||||
switch(i) {
|
switch(i) {
|
||||||
case 0: dsp.setCurrent(SEPS.midlet.cnv); break;
|
case 0: dsp.setCurrent(SEPS.midlet.cnv); break;
|
||||||
case 1: dsp.setCurrent(new Options()); break;
|
case 1: dsp.setCurrent(new SetSleepMode()); break;
|
||||||
case 2: dsp.setCurrent(new Info()); break;
|
case 2: dsp.setCurrent(new FindText()); break;
|
||||||
case 3: dsp.setCurrent(null); break;
|
case 3: dsp.setCurrent(new Options()); break;
|
||||||
case 4: SEPS.midlet.destroyApp(true); break;
|
case 4: dsp.setCurrent(new Info()); break;
|
||||||
|
case 5: dsp.setCurrent(null); break;
|
||||||
|
case 6: SEPS.midlet.destroyApp(true); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import java.util.Random;
|
||||||
import javax.microedition.lcdui.*;
|
import javax.microedition.lcdui.*;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -12,21 +13,24 @@ import javax.microedition.lcdui.*;
|
|||||||
public class Options extends Form implements CommandListener {
|
public class Options extends Form implements CommandListener {
|
||||||
|
|
||||||
private Command back,ok;
|
private Command back,ok;
|
||||||
private TextField az, un, cc, hp;
|
private TextField zw, az, un;
|
||||||
private ChoiceGroup skin, cRC;
|
private ChoiceGroup skin, vis, cRC, lang;
|
||||||
|
|
||||||
|
|
||||||
public Options() {
|
public Options() {
|
||||||
super("Íàñòðîéêè");
|
super(SEPS.midlet.lang.options);
|
||||||
back = new Command("Íàçàä", Command.BACK, 3);
|
back = new Command(SEPS.midlet.lang.back, Command.BACK, 3);
|
||||||
ok = new Command("Ok", Command.OK, 1);
|
ok = new Command(SEPS.midlet.lang.ok, Command.OK, 1);
|
||||||
az = new TextField("Ïàïêà ñ òåêñòàìè:", Rms.lrcpath, 256, TextField.ANY);
|
zw = new TextField(SEPS.midlet.lang.sensetivity, String.valueOf(Rms.sensetivity), 4, TextField.NUMERIC);
|
||||||
// un = new TextField(L.str[L.noc]+":", String.valueOf(P.undo), 2, TextField.NUMERIC);
|
az = new TextField(SEPS.midlet.lang.textfolder, Rms.lrcpath, 256, TextField.ANY);
|
||||||
|
un = new TextField(SEPS.midlet.lang.vibro, String.valueOf(Rms.vibrlen), 4, TextField.NUMERIC);
|
||||||
// cc = new TextField(L.str[L.cch]+":", "000000", 6, TextField.ANY);
|
// cc = new TextField(L.str[L.cch]+":", "000000", 6, TextField.ANY);
|
||||||
// hp = new TextField(L.str[L.ach], String.valueOf(P.heap), 2, TextField.ANY);
|
// hp = new TextField(L.str[L.ach], String.valueOf(P.heap), 2, TextField.ANY);
|
||||||
skin = new ChoiceGroup ("Ñêèíû", ChoiceGroup.EXCLUSIVE);
|
lang = new ChoiceGroup ("Language / ßçûê", ChoiceGroup.EXCLUSIVE);
|
||||||
|
skin = new ChoiceGroup (SEPS.midlet.lang.skin, ChoiceGroup.EXCLUSIVE);
|
||||||
|
vis = new ChoiceGroup (SEPS.midlet.lang.visual, ChoiceGroup.EXCLUSIVE);
|
||||||
cRC = new ChoiceGroup ("", ChoiceGroup.MULTIPLE);
|
cRC = new ChoiceGroup ("", ChoiceGroup.MULTIPLE);
|
||||||
appendOther();
|
appendSkin();
|
||||||
StrokeStyle();
|
StrokeStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,16 +39,27 @@ public class Options extends Form implements CommandListener {
|
|||||||
|
|
||||||
if ((c==ok || c==List.SELECT_COMMAND)) {
|
if ((c==ok || c==List.SELECT_COMMAND)) {
|
||||||
new Skin(Rms.skinid = skin.getSelectedIndex());
|
new Skin(Rms.skinid = skin.getSelectedIndex());
|
||||||
|
SEPS.midlet.lang = new Lang(Rms.lngid = lang.getSelectedIndex());
|
||||||
|
Rms.visid = vis.getSelectedIndex();
|
||||||
|
if(Rms.visid!=0) SEPS.midlet.cnv.swf = new Capuchin (Rms.visid);
|
||||||
|
Rms.sensetivity=Integer.parseInt(zw.getString());
|
||||||
|
Rms.vibrlen=Integer.parseInt(un.getString());
|
||||||
Rms.lrcpath=az.getString();
|
Rms.lrcpath=az.getString();
|
||||||
// P.az=Integer.parseInt(az.getString());
|
// P.az=Integer.parseInt(az.getString());
|
||||||
// P.curcolor = getHexValue(cc.getString());
|
// P.curcolor = getHexValue(cc.getString());
|
||||||
// P.heap = Integer.parseInt(hp.getString());
|
// P.heap = Integer.parseInt(hp.getString());
|
||||||
Rms.light = cRC.isSelected(0);
|
Rms.light = cRC.isSelected(0);
|
||||||
// P.dsI = cRC.isSelected(1);
|
Rms.startPlayer = cRC.isSelected(1);
|
||||||
// P.isUndo = cRC.isSelected(2);
|
Rms.closePlayer = cRC.isSelected(2);
|
||||||
// P.isEfView = cRC.isSelected(3);
|
Rms.flash = cRC.isSelected(3);
|
||||||
// P.isLight = cRC.isSelected(4);
|
Rms.statGo = cRC.isSelected(4); if(!Rms.statGo) Rms.stat=Rms.statGo;
|
||||||
// P.BOC = cRC.isSelected(5);
|
Rms.urlstat = cRC.isSelected(5);
|
||||||
|
Rms.actmenu = cRC.isSelected(6);
|
||||||
|
Rms.listfw = cRC.isSelected(7);
|
||||||
|
if(Rms.urlstat && Rms.id==0) {
|
||||||
|
Random rnd = new Random();
|
||||||
|
Rms.id = (rnd.nextInt() >>> 1) % 10000000;
|
||||||
|
}
|
||||||
// P.undo=Integer.parseInt(un.getString());
|
// P.undo=Integer.parseInt(un.getString());
|
||||||
// Editor.isteps = new Image[P.undo];
|
// Editor.isteps = new Image[P.undo];
|
||||||
// Editor.ist=0;
|
// Editor.ist=0;
|
||||||
@ -53,38 +68,61 @@ public class Options extends Form implements CommandListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void StrokeStyle() {
|
private void StrokeStyle() {
|
||||||
|
append(lang);
|
||||||
append(skin);
|
append(skin);
|
||||||
|
append(zw);
|
||||||
append(az);
|
append(az);
|
||||||
// append(cc);
|
append(un);
|
||||||
|
append(vis);
|
||||||
// append(hp);
|
// append(hp);
|
||||||
append(cRC);
|
append(cRC);
|
||||||
// append(un);
|
|
||||||
addCommand(ok);
|
addCommand(ok);
|
||||||
addCommand(back);
|
addCommand(back);
|
||||||
setCommandListener(this);
|
setCommandListener(this);
|
||||||
SEPS.midlet.dsp.setCurrent(this);
|
SEPS.midlet.dsp.setCurrent(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void appendOther() {
|
private void appendSkin() {
|
||||||
skin.append("Ñòàíäàðòíûé SEPS", null);
|
lang.append("English", null);
|
||||||
|
lang.append("Ðóññêèé", null);
|
||||||
|
lang.setSelectedIndex(Rms.lngid, true);
|
||||||
|
|
||||||
|
skin.append(SEPS.midlet.lang.origseps, null);
|
||||||
skin.append("ProPaintMobile", null);
|
skin.append("ProPaintMobile", null);
|
||||||
skin.append("Ãîòè÷åñêèé", null);
|
skin.append(SEPS.midlet.lang.gothic, null);
|
||||||
skin.append("Ýìî", null);
|
skin.append(SEPS.midlet.lang.emo, null);
|
||||||
skin.append("SEclub.ORG", null);
|
skin.append("SEclub.ORG", null);
|
||||||
skin.append("aNNiMON Forum", null);
|
skin.append("aNNiMON Forum", null);
|
||||||
skin.setSelectedIndex(Rms.skinid, true);
|
skin.setSelectedIndex(Rms.skinid, true);
|
||||||
|
|
||||||
cRC.append("Ïîñòîÿííàÿ ïîäñâåòêà", null);
|
cRC.append(SEPS.midlet.lang.light, null);
|
||||||
// cRC.append(L.str[L.stias], null);
|
cRC.append(SEPS.midlet.lang.start, null);
|
||||||
// cRC.append(L.str[L.aplca], null);
|
cRC.append(SEPS.midlet.lang.stop, null);
|
||||||
// cRC.append(L.str[L.prwef], null);
|
cRC.append(SEPS.midlet.lang.flashlight, null);
|
||||||
|
cRC.append(SEPS.midlet.lang.statlocal, null);
|
||||||
|
cRC.append(SEPS.midlet.lang.scrobbling, null);
|
||||||
|
cRC.append(SEPS.midlet.lang.uiactivity, null);
|
||||||
|
cRC.append(SEPS.midlet.lang.listforward, null);
|
||||||
// cRC.append(L.str[120], null);
|
// cRC.append(L.str[120], null);
|
||||||
// cRC.append(L.str[123], null);
|
// cRC.append(L.str[123], null);
|
||||||
cRC.setSelectedIndex(0, Rms.light);
|
cRC.setSelectedIndex(0, Rms.light);
|
||||||
// cRC.setSelectedIndex(1, P.dsI);
|
cRC.setSelectedIndex(1, Rms.startPlayer);
|
||||||
// cRC.setSelectedIndex(2, P.isUndo);
|
cRC.setSelectedIndex(2, Rms.closePlayer);
|
||||||
// cRC.setSelectedIndex(3, P.isEfView);
|
cRC.setSelectedIndex(3, Rms.flash);
|
||||||
// cRC.setSelectedIndex(4, P.isLight);
|
cRC.setSelectedIndex(4, Rms.stat);
|
||||||
// cRC.setSelectedIndex(5, P.BOC);
|
cRC.setSelectedIndex(5, Rms.urlstat);
|
||||||
|
cRC.setSelectedIndex(6, Rms.actmenu);
|
||||||
|
cRC.setSelectedIndex(7, Rms.listfw);
|
||||||
|
|
||||||
|
vis.append(SEPS.midlet.lang.origjava, null);
|
||||||
|
vis.append(SEPS.midlet.lang.circles, null);
|
||||||
|
vis.append("Kaleidoscope black (2.swf)", null);
|
||||||
|
vis.append("Laura sb strobe (3.swf)", null);
|
||||||
|
vis.append("Precision red (4.swf)", null);
|
||||||
|
vis.append("Rain (5.swf)", null);
|
||||||
|
vis.append("Power dots (6.swf)", null);
|
||||||
|
// vis.append("Jet (7.swf)", null);
|
||||||
|
// vis.append("Jet (8.swf)", null);
|
||||||
|
vis.setSelectedIndex(Rms.visid, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
14
src/Rate.java
Normal file
14
src/Rate.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class Rate {
|
||||||
|
|
||||||
|
String song;
|
||||||
|
int rate;
|
||||||
|
}
|
139
src/RateImpl.java
Normal file
139
src/RateImpl.java
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
import java.io.*;
|
||||||
|
import java.util.Vector;
|
||||||
|
import javax.microedition.io.*;
|
||||||
|
import javax.microedition.io.file.FileConnection;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class RateImpl {
|
||||||
|
|
||||||
|
public int numRates; //êîë-âî
|
||||||
|
public Vector rates;
|
||||||
|
|
||||||
|
public int update(String song) {
|
||||||
|
int s = rates.size();
|
||||||
|
if(s!=0)
|
||||||
|
for(int i=0; i<s; i++) {
|
||||||
|
Rate r = (Rate) rates.elementAt(i);
|
||||||
|
if(r.song.equals(song)) {
|
||||||
|
r.rate++;
|
||||||
|
rates.setElementAt(r, i);
|
||||||
|
return r.rate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Rate r = new Rate();
|
||||||
|
r.song = song;
|
||||||
|
r.rate = 1;
|
||||||
|
rates.addElement(r);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clear() {
|
||||||
|
rates.removeAllElements();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open() {
|
||||||
|
FileConnection fc;
|
||||||
|
rates = new Vector();
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
try {
|
||||||
|
fc = (FileConnection) Connector.open("file:///c:/other/SEPS_Rate.txt", Connector.READ);
|
||||||
|
if(!fc.exists()) {fc.close();return;}
|
||||||
|
InputStream is = fc.openInputStream();
|
||||||
|
int ch = 0;
|
||||||
|
while ((ch = is.read()) != -1) {
|
||||||
|
sb.append(StringEncoder.decodeCharCP1251((byte)ch));
|
||||||
|
}
|
||||||
|
is.close();
|
||||||
|
fc.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
String s = sb.toString();
|
||||||
|
char c = '\n';
|
||||||
|
int j = s.length();
|
||||||
|
String s2 = "";
|
||||||
|
for(int k = 0; k < j; k++)
|
||||||
|
{
|
||||||
|
int i = s.charAt(k);
|
||||||
|
if(i == c)
|
||||||
|
{
|
||||||
|
if(s2.length() > 0)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Rate r = new Rate();
|
||||||
|
r.rate = Integer.parseInt(s2.substring(0, s2.lastIndexOf('|')).trim());
|
||||||
|
r.song = s2.substring(s2.lastIndexOf('|') + 1).trim();
|
||||||
|
rates.addElement(r);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
s2 = "";
|
||||||
|
}
|
||||||
|
}else s2 = s2 + String.valueOf((char)i);
|
||||||
|
}
|
||||||
|
if(s2.length() > 0) {
|
||||||
|
try {
|
||||||
|
Rate r = new Rate();
|
||||||
|
r.rate = Integer.parseInt(s2.substring(0, s2.lastIndexOf('|')).trim());
|
||||||
|
r.song = s2.substring(s2.lastIndexOf('|') + 1).trim();
|
||||||
|
rates.addElement(r);
|
||||||
|
} catch (Exception exc) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
FileConnection fc;
|
||||||
|
try {
|
||||||
|
fc = (FileConnection) Connector.open("file:///c:/other/SEPS_Rate.txt");
|
||||||
|
if(fc.exists()) {fc.delete();}
|
||||||
|
fc.create();
|
||||||
|
DataOutputStream os = fc.openDataOutputStream();
|
||||||
|
Rate[] s = sortRate();
|
||||||
|
int l = s.length;
|
||||||
|
for(int i=0; i<l; i++) {
|
||||||
|
addText(os, s[i].rate+" | "+s[i].song);
|
||||||
|
}
|
||||||
|
addText(os, SEPS.midlet.lang.elements+l);
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
fc.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addText(DataOutputStream dos, String s1) throws IOException {
|
||||||
|
byte[] bt = new byte[s1.length()+1];
|
||||||
|
int ss = bt.length-1;
|
||||||
|
for (int i = 0; i < ss; i++) {
|
||||||
|
char c = s1.charAt(i);
|
||||||
|
dos.writeByte(StringEncoder.encodeCharCP1251(c));
|
||||||
|
}
|
||||||
|
dos.writeByte((byte) '\n');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rate[] sortRate() {
|
||||||
|
Rate[] s = new Rate[rates.size()];
|
||||||
|
rates.copyInto(s);
|
||||||
|
int sl = s.length;
|
||||||
|
for(int i=0; i<sl; i++) {
|
||||||
|
for(int j=0; j<sl-1; j++) {
|
||||||
|
if(s[j].rate<s[j+1].rate) {
|
||||||
|
Rate q=s[j];
|
||||||
|
s[j]=s[j+1];
|
||||||
|
s[j+1]=q;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
52
src/Rms.java
52
src/Rms.java
@ -8,13 +8,33 @@ import javax.microedition.rms.*;
|
|||||||
*/
|
*/
|
||||||
public class Rms {
|
public class Rms {
|
||||||
|
|
||||||
private static final String rmsName = "SEPSLite";
|
private static final String rmsName = "SEPS";
|
||||||
private static RecordStore rmsStore;
|
private static RecordStore rmsStore;
|
||||||
public static boolean firstStart = true; // ïåðâûé ñòàðò
|
public static boolean firstStart = true; // ïåðâûé ñòàðò
|
||||||
|
public static int sensetivity = 800;
|
||||||
public static int skinid = 0;
|
public static int skinid = 0;
|
||||||
public static boolean isLyric = true;
|
public static boolean isLyric = true;
|
||||||
public static String lrcpath = "c:/music/Lyrics/";
|
public static String lrcpath = "c:/music/Lyrics/";
|
||||||
public static boolean light = false;
|
public static boolean light = false;
|
||||||
|
public static boolean startPlayer = true;//çàïóñêàòü ïëåéåð ïðè ñòàðòå ïðîãðàììû
|
||||||
|
public static boolean closePlayer = true;//çàêðûâàòü ïëåéåð ïðè âûõîäå èç ïðîãðàììû
|
||||||
|
public static int vibrlen = 200;
|
||||||
|
public static boolean flash = true;//ìèãàíèå ïðè ïåðåêëþ÷åíèè
|
||||||
|
public static int visid = 0;
|
||||||
|
public static boolean statGo = false; //ïåðåêëþ÷àòåëü ñòàòèñòèêè
|
||||||
|
public static boolean stat = false;//âåñòè ñòàòèñòèêó
|
||||||
|
public static boolean urlstat = true;
|
||||||
|
public static boolean actmenu = false;
|
||||||
|
public static boolean listfw = false;
|
||||||
|
public static boolean vis = true;
|
||||||
|
public static boolean accel = true;
|
||||||
|
public static String lastSong = "";
|
||||||
|
public static int id = 0;
|
||||||
|
public static int lngid = 0;
|
||||||
|
|
||||||
|
|
||||||
|
public static int dh,dm;
|
||||||
|
public static boolean slpmode = false;
|
||||||
/**
|
/**
|
||||||
* Ñîõðàíåíèå íàñòðîåê
|
* Ñîõðàíåíèå íàñòðîåê
|
||||||
*/
|
*/
|
||||||
@ -25,10 +45,25 @@ public class Rms {
|
|||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
DataOutputStream dos = new DataOutputStream(baos);
|
DataOutputStream dos = new DataOutputStream(baos);
|
||||||
dos.writeBoolean(firstStart);
|
dos.writeBoolean(firstStart);
|
||||||
|
dos.writeInt(sensetivity);
|
||||||
dos.writeInt(skinid);
|
dos.writeInt(skinid);
|
||||||
dos.writeBoolean(isLyric);
|
dos.writeBoolean(isLyric);
|
||||||
dos.writeUTF(lrcpath);
|
dos.writeUTF(lrcpath);
|
||||||
dos.writeBoolean(light);
|
dos.writeBoolean(light);
|
||||||
|
dos.writeBoolean(startPlayer);
|
||||||
|
dos.writeBoolean(closePlayer);
|
||||||
|
dos.writeInt(vibrlen);
|
||||||
|
dos.writeBoolean(flash);
|
||||||
|
dos.writeInt(visid);
|
||||||
|
dos.writeBoolean(stat);
|
||||||
|
dos.writeUTF(lastSong);
|
||||||
|
dos.writeInt(id);
|
||||||
|
dos.writeBoolean(urlstat);
|
||||||
|
dos.writeInt(lngid);
|
||||||
|
dos.writeBoolean(actmenu);
|
||||||
|
dos.writeBoolean(listfw);
|
||||||
|
dos.writeBoolean(vis);
|
||||||
|
dos.writeBoolean(accel);
|
||||||
dos.flush();
|
dos.flush();
|
||||||
options = baos.toByteArray();
|
options = baos.toByteArray();
|
||||||
dos.close();
|
dos.close();
|
||||||
@ -63,10 +98,25 @@ public class Rms {
|
|||||||
try {
|
try {
|
||||||
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(rmsStore.getRecord(1)));
|
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(rmsStore.getRecord(1)));
|
||||||
firstStart = dis.readBoolean();
|
firstStart = dis.readBoolean();
|
||||||
|
sensetivity = dis.readInt();
|
||||||
skinid = dis.readInt();
|
skinid = dis.readInt();
|
||||||
isLyric = dis.readBoolean();
|
isLyric = dis.readBoolean();
|
||||||
lrcpath = dis.readUTF();
|
lrcpath = dis.readUTF();
|
||||||
light = dis.readBoolean();
|
light = dis.readBoolean();
|
||||||
|
startPlayer = dis.readBoolean();
|
||||||
|
closePlayer = dis.readBoolean();
|
||||||
|
vibrlen = dis.readInt();
|
||||||
|
flash = dis.readBoolean();
|
||||||
|
visid = dis.readInt();
|
||||||
|
stat = dis.readBoolean();
|
||||||
|
lastSong = dis.readUTF();
|
||||||
|
id = dis.readInt();
|
||||||
|
urlstat = dis.readBoolean();
|
||||||
|
lngid = dis.readInt();
|
||||||
|
actmenu = dis.readBoolean();
|
||||||
|
listfw = dis.readBoolean();
|
||||||
|
vis = dis.readBoolean();
|
||||||
|
accel = dis.readBoolean();
|
||||||
dis.close();
|
dis.close();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
* and open the template in the editor.
|
* and open the template in the editor.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import javax.microedition.lcdui.Display;
|
import javax.microedition.lcdui.Display;
|
||||||
import javax.microedition.midlet.*;
|
import javax.microedition.midlet.*;
|
||||||
|
|
||||||
@ -14,16 +15,22 @@ public class SEPS extends MIDlet {
|
|||||||
public static SEPS midlet;
|
public static SEPS midlet;
|
||||||
public Display dsp;
|
public Display dsp;
|
||||||
public Canv cnv;
|
public Canv cnv;
|
||||||
|
public Lang lang;
|
||||||
|
|
||||||
public SEPS() {
|
public SEPS() {
|
||||||
midlet = this;
|
midlet = this;
|
||||||
Rms.restoreOptions();
|
|
||||||
new Skin(Rms.skinid);
|
|
||||||
cnv = new Canv();
|
|
||||||
dsp = Display.getDisplay(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startApp() {
|
public void startApp() {
|
||||||
|
Rms.restoreOptions();
|
||||||
|
lang = new Lang(Rms.lngid);
|
||||||
|
if(Rms.id==0) {
|
||||||
|
Random rnd = new Random();
|
||||||
|
Rms.id = (rnd.nextInt() >>> 1) % 10000000;
|
||||||
|
}
|
||||||
|
new Skin(Rms.skinid);
|
||||||
|
cnv = new Canv();
|
||||||
|
dsp = Display.getDisplay(this);
|
||||||
dsp.setCurrent(cnv);
|
dsp.setCurrent(cnv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,8 +39,10 @@ public class SEPS extends MIDlet {
|
|||||||
|
|
||||||
public void destroyApp(boolean unco) {
|
public void destroyApp(boolean unco) {
|
||||||
if(Rms.firstStart) Rms.firstStart=false;
|
if(Rms.firstStart) Rms.firstStart=false;
|
||||||
|
if(Rms.stat) cnv.ri.save();
|
||||||
|
if(Rms.statGo) Rms.stat=true;
|
||||||
Rms.saveOptions();
|
Rms.saveOptions();
|
||||||
cnv.pauseTrack();
|
if(Rms.closePlayer) cnv.pauseTrack();
|
||||||
notifyDestroyed();
|
notifyDestroyed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
52
src/SetSleepMode.java
Normal file
52
src/SetSleepMode.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import javax.microedition.lcdui.*;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class SetSleepMode extends Form implements CommandListener {
|
||||||
|
|
||||||
|
private Command back, ok;
|
||||||
|
private TextField zw;
|
||||||
|
|
||||||
|
public SetSleepMode() {
|
||||||
|
super(SEPS.midlet.lang.sleepmode);
|
||||||
|
back = new Command(SEPS.midlet.lang.back, Command.BACK, 2);
|
||||||
|
ok = new Command(SEPS.midlet.lang.ok, Command.OK, 1);
|
||||||
|
zw = new TextField(SEPS.midlet.lang.tooff, String.valueOf(10), 2, TextField.NUMERIC);
|
||||||
|
append(zw);
|
||||||
|
addCommand(ok);
|
||||||
|
addCommand(back);
|
||||||
|
setCommandListener(this);
|
||||||
|
SEPS.midlet.dsp.setCurrent(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void commandAction(Command c, Displayable d) {
|
||||||
|
if (c == back) {
|
||||||
|
SEPS.midlet.dsp.setCurrent(SEPS.midlet.cnv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c == ok) {
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
//òåêóùåå âðåìÿ
|
||||||
|
int ch = cal.get(Calendar.HOUR_OF_DAY);
|
||||||
|
int cm = cal.get(Calendar.MINUTE);
|
||||||
|
//âðåìÿ âûêëþ÷åíèÿ
|
||||||
|
int dh = ch;
|
||||||
|
int dm = cm + Integer.parseInt(zw.getString());
|
||||||
|
while(dm>=60) {
|
||||||
|
dm=dm-60; dh++;
|
||||||
|
}
|
||||||
|
if(dh>=24) dh=dh-24;
|
||||||
|
Rms.slpmode=true;
|
||||||
|
Rms.dh=dh; Rms.dm=dm;
|
||||||
|
SEPS.midlet.dsp.setCurrent(SEPS.midlet.cnv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
66
src/StringEncoder.java
Normal file
66
src/StringEncoder.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
|
||||||
|
public class StringEncoder
|
||||||
|
{
|
||||||
|
protected static char cp1251 [] =
|
||||||
|
{
|
||||||
|
'\u0410', '\u0411', '\u0412', '\u0413', '\u0414', '\u0415', '\u0416',
|
||||||
|
'\u0417', '\u0418', '\u0419', '\u041A', '\u041B', '\u041C', '\u041D',
|
||||||
|
'\u041E', '\u041F', '\u0420', '\u0421', '\u0422', '\u0423', '\u0424',
|
||||||
|
'\u0425', '\u0426', '\u0427', '\u0428', '\u0429', '\u042A', '\u042B',
|
||||||
|
'\u042C', '\u042D', '\u042E', '\u042F', '\u0430', '\u0431', '\u0432',
|
||||||
|
'\u0433', '\u0434', '\u0435', '\u0436', '\u0437', '\u0438', '\u0439',
|
||||||
|
'\u043A', '\u043B', '\u043C', '\u043D', '\u043E', '\u043F', '\u0440',
|
||||||
|
'\u0441', '\u0442', '\u0443', '\u0444', '\u0445', '\u0446', '\u0447',
|
||||||
|
'\u0448', '\u0449', '\u044A', '\u044B', '\u044C', '\u044D', '\u044E',
|
||||||
|
'\u044F'
|
||||||
|
};
|
||||||
|
|
||||||
|
public static char decodeCharCP1251 (byte b)
|
||||||
|
{
|
||||||
|
int ich = b & 0xff;
|
||||||
|
if (ich == 0xb8) // Ñ‘
|
||||||
|
return 0x0451;
|
||||||
|
else if (ich == 0xa8) // Ð<EFBFBD>
|
||||||
|
return 0x0401;
|
||||||
|
else if (ich >= 0xc0)
|
||||||
|
return cp1251[ich-192];
|
||||||
|
return (char)ich;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte encodeCharCP1251 (char ch)
|
||||||
|
{
|
||||||
|
if (ch > 0 && ch < 128)
|
||||||
|
return (byte) ch;
|
||||||
|
else if (ch == 0x401)
|
||||||
|
return -88; // ¨
|
||||||
|
else if (ch == 0x404)
|
||||||
|
return -86; // ª
|
||||||
|
else if (ch == 0x407)
|
||||||
|
return -81; // ¯
|
||||||
|
else if (ch == 0x451)
|
||||||
|
return -72; // ¸
|
||||||
|
else if (ch == 0x454)
|
||||||
|
return -70; // º
|
||||||
|
else if (ch == 0x457)
|
||||||
|
return -65; // ¿
|
||||||
|
return (byte)((byte)(ch) + 176);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static char checkCP1251 (char ch)
|
||||||
|
{
|
||||||
|
int bt = (byte) ch;
|
||||||
|
if(bt < 0) return decodeCharCP1251((byte) (256 + bt));
|
||||||
|
else return ch;
|
||||||
|
/*byte b = encodeCharCP1251(ch);
|
||||||
|
int ich = b & 0xff;
|
||||||
|
if (ich == 0xb8) // Ñ‘
|
||||||
|
return 0x0451;
|
||||||
|
else if (ich == 0xa8) // Ð<EFBFBD>
|
||||||
|
return 0x0401;
|
||||||
|
else if (ich >= 0xc0)
|
||||||
|
return (char)(ich-192);
|
||||||
|
return (char)ich;*/
|
||||||
|
//return decodeCharCP1251(encodeCharCP1251(ch));
|
||||||
|
}
|
||||||
|
}
|
36
src/about
36
src/about
@ -1,20 +1,47 @@
|
|||||||
Sony Ericsson Player Service 3.0
|
Sony Ericsson Player Service 5.2
|
||||||
|
|
||||||
Автор: Виктор aNNiMON Мельник
|
Автор: Виктор aNNiMON Мельник
|
||||||
Ñàéò ðàçðàáîò÷èêà: http://annimon.wen.ru/
|
Сайт разработчика: http://annimon.z83.ru/
|
||||||
|
|
||||||
Программа - управление родным плейером для телефонов Sony Ericsson с поддержкой MultimediaService API и датчиком движения.
|
Программа - управление родным плейером для телефонов Sony Ericsson с поддержкой MultimediaService API и датчиком движения.
|
||||||
|
|
||||||
Управление:
|
Управление:
|
||||||
Влево/Вправо/Движение акселерометром - Переключение песен.
|
Влево/Вправо/Движение акселерометром - Переключение песен.
|
||||||
Вверх/Вниз - переключение режимов: Всё/Визуализация/Текст.
|
Вверх/Вниз - переключение режимов: Всё/Визуализация/Текст.
|
||||||
1/3 - Ïåðåìîòêà íàçàä/âïåðåä.
|
1 - Горячая клавиша поиска текста.
|
||||||
|
3 - установить начало/конец отрезка или отключить повтор.
|
||||||
|
4/6 - Перемотка назад/вперед.
|
||||||
5/Огонь - Пауза.
|
5/Огонь - Пауза.
|
||||||
|
9 - Спящий режим.
|
||||||
0 - Включение/Отключение текстов песен.
|
0 - Включение/Отключение текстов песен.
|
||||||
* - Включение/Отключение визуализации.
|
* - Включение/Отключение визуализации.
|
||||||
# - Включение/Отключение акселерометра.
|
# - Включение/Отключение акселерометра.
|
||||||
|
|
||||||
Изменения:
|
Изменения:
|
||||||
|
Версия 5.2
|
||||||
|
- Добавлен пункт в настройках, при котором переключение треков будет идти только вперед, независимо от направления рывка.
|
||||||
|
- Поддержка русской кодировки в именах файлов.
|
||||||
|
- Другие исправления и изменения.
|
||||||
|
Версия 5.0 && 5.1
|
||||||
|
- Добавлена сортировка списка файлов по рейтингу.
|
||||||
|
- Добавлен английский язык.
|
||||||
|
- Исправлены найденные ошибки.
|
||||||
|
- Добавил статистику проигрывания треков.
|
||||||
|
- Исправил повтор треков при свернутом приложении.
|
||||||
|
- Добавил поиск текстов песен.
|
||||||
|
- Сделал некое подобие скробблинга. Данные о проигруемой музыке отсылаются на сайт annimon.z83.ru
|
||||||
|
|
||||||
|
Версия 4.0
|
||||||
|
- Исправлена ошибка при открытии .lrc-файлов содержащих пустые строки.
|
||||||
|
- Исправлена ошибка при отображении начальных строк текстов песен.
|
||||||
|
- Добавил настройки: "Запускать плейер при старте программы", "Закрывать плейер при выходе из программы".
|
||||||
|
- Добавил вибрацию при переключении треков и настройку длительности.
|
||||||
|
- Добавил эффект мигания подсветкой при переключении треков и настройку.
|
||||||
|
- Сменил клавиши перемотки с 1/3 на 4/6.
|
||||||
|
- Добавил повтор отрезков. Кнопкой 3 устанавливаются отрезки.
|
||||||
|
- Добавил спящий режим (кн. 9 или пункт в меню). По истечению времени программа закроется вместе с плейером.
|
||||||
|
- Добавил настройку визуализаций. Теперь используется Project Capuchin.
|
||||||
|
|
||||||
Версия 3.0
|
Версия 3.0
|
||||||
- Исправлен показ обложки в полноэкранном режиме.
|
- Исправлен показ обложки в полноэкранном режиме.
|
||||||
- Добавил поддержку текстов песен (lrc). Файлы кидаем в папку Lyrics. Например c:/music/Lyrics/Bullet For My Valentine - Hand of Blood.lrc
|
- Добавил поддержку текстов песен (lrc). Файлы кидаем в папку Lyrics. Например c:/music/Lyrics/Bullet For My Valentine - Hand of Blood.lrc
|
||||||
@ -28,6 +55,9 @@ Sony Ericsson Player Service 3.0
|
|||||||
- Режим визуализации. Переключается клавишами Вверх/Вниз,
|
- Режим визуализации. Переключается клавишами Вверх/Вниз,
|
||||||
- Добавил перемотку клавишами 1 и 3.
|
- Добавил перемотку клавишами 1 и 3.
|
||||||
|
|
||||||
|
Скробблинг:
|
||||||
|
В версии 5.0 сделал некое подобие скробблинга, то есть информация о проигруемом файле отсылается на сайт. Потом вы можете смотреть статистику проигрывания музыки.
|
||||||
|
|
||||||
Поддержка lrc:
|
Поддержка lrc:
|
||||||
Lyrics-файл (.lrc) должен быть записан в кодировке WIN-1251, иначе возможны ошибки при чтении.
|
Lyrics-файл (.lrc) должен быть записан в кодировке WIN-1251, иначе возможны ошибки при чтении.
|
||||||
Имя lrc-файла должно быть либо "[Название группы] - [Название песни].lrc", либо "[Название исходного фудиофайла].ltc".
|
Имя lrc-файла должно быть либо "[Название группы] - [Название песни].lrc", либо "[Название исходного фудиофайла].ltc".
|
||||||
|
@ -1 +1,2 @@
|
|||||||
aNNiMON, Ну Вот юин эсприта, основной плагмэйкер... 2542902 Вот LocID
|
aNNiMON, Ну Вот юин эсприта, основной плагмэйкер... 2542902 Вот LocID
|
||||||
|
//SE ñôîòîøîïèòü + aNNiMOON
|
Loading…
Reference in New Issue
Block a user