This commit is contained in:
Victor 2018-11-14 15:51:31 +02:00
parent 222434ff8e
commit e2ead286e2
29 changed files with 1115 additions and 181 deletions

View File

@ -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"/>
<!-- <!--

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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>

BIN
src/1.swf Normal file

Binary file not shown.

BIN
src/2.swf Normal file

Binary file not shown.

BIN
src/3.swf Normal file

Binary file not shown.

BIN
src/4.swf Normal file

Binary file not shown.

BIN
src/5.swf Normal file

Binary file not shown.

BIN
src/6.swf Normal file

Binary file not shown.

View File

@ -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) {
e2 = new Engine2(w-6, ih); if(e2==null) {
e2.setRun(true); e2 = new Engine2(w-6, ih);
e2.setRun(true);
}
g.drawImage(e2.MainCanvas(), w/2, h/2, 3);
} else{
((Capuchin) swf).drawFlash(g, 3, h/2-(ih/2), w-6, ih);
} }
g.drawImage(e2.MainCanvas(), w/2, h/2, 3);
} }
if(Rms.isLyric && lrc!=null) { if(Rms.isLyric && lrc!=null) {
drawCenter(g, lrc.get5Lines(media.getMediaTime())); try {
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,79 +135,93 @@ 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 {
if (mediaControl.getState() == mediaControl.STATE_PLAY) pauseTrack(); if (mediaControl.getState() == mediaControl.STATE_PLAY) pauseTrack();
else playTrack(); else playTrack();
} catch (Exception e) { } catch (Exception e) {
} }
@ -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
View 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
View 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
View 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);
}
}
}

View File

@ -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
View 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 = "Ëèñòàòü âïåðåä";
}
}
}

View File

@ -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();
} }*/
} }

View File

@ -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;
} }
} }
} }

View File

@ -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
View 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
View 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;
}
}

View File

@ -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) {
} }

View File

@ -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
View 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
View 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));
}
}

View File

@ -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".

View File

@ -1 +1,2 @@
aNNiMON, Ну Вот юин эсприта, основной плагмэйкер... 2542902 Вот LocID aNNiMON, Ну Вот юин эсприта, основной плагмэйкер... 2542902 Вот LocID
//SE сфотошопить + aNNiMOON