2014/07/14

Android携帯の着信音とアラーム音楽を変えよう

もはや、Androidの携帯で音楽を聞くときは、GooglePlayMusicを使うので
携帯に音楽をコピーしなくてもよくなったけど。
着信音とかめざましのアラーム音楽とかを変えたい!という方のために
簡単に説明しようと思います。

MP3を編集する?

まず、音楽をイケてる出だしにしたいよね。
mp3cutというサイトで、とても直感的に、編集できます。
http://mp3cut.net/
どうぞ。

パソコンの音楽を携帯に入れるというところからです。

まずパソコンと携帯をUSBでつなぎます

USB(´・ω・`)?
こんなやつです。


繋ぐと、ピコ!と音がする(かバイブかなにか)ので、
携帯を見ると、「メディアデバイスで接続」か何かのお知らせが出ています。


携帯側で接続を許可すると、パソコンは、携帯を認識します。
[フォルダを開いてファイルを表示]を選択します。
この画面が出てこない場合は、[マイコンピュータ]から携帯が接続されている
ドライブ(ディスク)を選択して表示します。

Android側にフォルダを作る

続いて、フォルダーを開いて音楽を入れる場所をつくります。
私は、『コンピューター\Nexus 5\内部ストレージ\media\audio\ringtones』に入れてます。


ここで、
着信音が『ringtones』で、
めざましが『alarms』です。

べつに、場所(階層)はどこでもいいのですが、フォルダ名が重要です。
フォルダは、右クリックメニュー『新規フォルダー』で作って名前をとにかくRingtonesとAlarms

PCからAndroidにコピペ

続いて、パソコンの音楽が入っている場所を開きます。
左がAndroidに作ったRingtonesフォルダで、右がパソコンの音楽が入っているフォルダです。
















携帯で着信音・めざましアラームを今コピーした音楽に変えよう

携帯を見ます。
まず、着信音から
[設定]>[音]>[着信音]ですかね?機種によって違うんですよね。



次にアラーム


ワーイできた!

ちなみに、携帯にすでに音楽いっぱい入ってるし(´・ω・`)っていうひとは、
いけてるファイルエクスプローラ(ESファイルエクスプローラとか?)あれば、
音を設定するときに、起動してくれるから、直接指定できるね(´・ω・`)




JavaFXでグラフ描くよ

CSSでグラフの色が設定できるのはいいですね。
あとから、簡単に変えれる!
StackedChartをやるつもりでしたがひとまず、1系列で。
#追記:ソースがうまく貼れないので、githubにあげてみた

まず、画面が

<BorderPane id="_root" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="javafxsample2.ChartController">
    <stylesheets>   
        <URL value="@chart.css" />
    </stylesheets>
    <top>
            <MenuBar id="menuBer" layoutY="2.0">
                    <menus>
                            <Menu mnemonicParsing="false" text="メニュー" />
                    </menus>
            </MenuBar>
    </top>
    <center>
        <VBox>
        <StackedBarChart fx:id="chartApp" BorderPane.alignment="CENTER">
            <xAxis>
                    <CategoryAxis fx:id="xAxis1" side="BOTTOM" />
            </xAxis>
            <yAxis>
                    <NumberAxis fx:id="yAxis1" side="LEFT" />
            </yAxis>
    </StackedBarChart>
        <StackedBarChart fx:id="chartApp2" BorderPane.alignment="CENTER">
            <xAxis>
                    <CategoryAxis fx:id="xAxis2" side="BOTTOM" />
            </xAxis>
            <yAxis>
                    <NumberAxis fx:id="yAxis2" side="LEFT" />
            </yAxis>
    </StackedBarChart>
        </VBox>
    </center>
</BorderPane>

コントローラが
public class ChartController extends BaseController  implements Initializable{
    @FXML private NumberAxis yAxis1;
    @FXML private NumberAxis yAxis2;
    @FXML private CategoryAxis xAxis1;
    @FXML private CategoryAxis xAxis2;
    @FXML private StackedBarChart chartApp;
    @FXML private StackedBarChart chartApp2;
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        
        XYChart.Series series1 = new XYChart.Series();
        XYChart.Series series2 = new XYChart.Series();

        xAxis1.setLabel("Time");
        xAxis2.setLabel("Time");
        Calendar cal1 = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");//"hh:mm:ss SSS"
        cal1.set(2016, 6, 30);
        Random rnd = new Random();
        ArrayList datelist = new ArrayList();
        for(int i=0; i< 20; i++){
         cal1.add(Calendar.SECOND, 1);
         String label = sdf.format(cal1.getTime());
         datelist.add(label);
        }
        xAxis1.setCategories(FXCollections.observableArrayList(datelist));
        xAxis2.setCategories(FXCollections.observableArrayList(datelist));
        
        yAxis1.setLabel("M bps");
        yAxis2.setLabel("なんか単位");
        series1.setName("なんとかチャート");
        series2.setName("なんかのグラフ");
        for(int i=0; i< 20; i++){
            float val = rnd.nextInt(100); 
            series1.getData().add(new XYChart.Data(datelist.get(i), val));
            series2.getData().add(new XYChart.Data(datelist.get(i), val%20));
        }
        chartApp.getData().addAll(series1);
        chartApp2.getData().addAll(series2);
    }
}



でCSSがこんな感じ
.chart {
    -fx-category-gap:0.0px;
    -fx-background-color: -fx-box-border, #f5f5f5;
    -fx-background-insets: 0, 1;
}
#chartApp .default-color0.chart-bar{
    -fx-stroke-width: 0;
    -fx-background-radius: 0;
    -fx-background-color: rgba(50,180,230,0.6);
    -fx-background-position: left center;
}
#chartApp2 .default-color0.chart-bar{
    -fx-stroke-width: 0;
    -fx-background-radius: 0;
    -fx-background-color: rgba(180,230,50,0.6);
    -fx-background-position: left center;
}



JavaFXやってみた

JavaFXやってみるよ。

環境は、CentOS6.5です。

JavaFXとは
Java Platform Standard Edition 7 Documentation
http://docs.oracle.com/javase/7/docs/

JDKに内包されているからそのまま使えるのだ。
swingの上にかぶさっている感じで、swingはコンポーネントとして利用できるのだ。
その他さまざまなコンポーネントがあって便利。
CSSでスキンを設定できるし。

JavaFXのリファレンス

JDKをインストール後、バージョンを確認しよう

/usr/java/jdk1.7.0_60/jre/lib/javafx.properties
↑これにjavaFXのバージョンが書いてあるよ

$ java -version
java version "1.7.0_60"
$ cat $JAVA_HOME/jre/lib/javafx.properties
javafx.runtime.version=2.2.60

ちなみにこの記事によると、「The JavaFX 2.2 SDK for Linux is installed as part of JDK 7 update 6 for Linux.」らしいので、yumで入れれるJDKには入ってなかった。
なので update 6を

$ sudo rpm -ihv jdk-7u60-linux-i586.rpm

とかで入れたよ。

JavaFX Scene Builder

JavaFXでMVC的にViewにあたる.fxml形式の画面を作成するためのツールです。
ポチポチ、コンポーネントを配置して画面を作りたい場合は、使います。
全部javaで描きますっていう場合は、要らないかも。
紹介してもらった@skrbさんのサイトに詳しく書いてあるから参考に↓

開発環境(eclipse編)

java系では、IDEはNetBeansとやらが主流なのかもしれないけども。
eclipseでやってみよう(と最初は思った)。

eclipseのアドイン e(fx)clipse

eclipseでjavaFXのプロジェクトを作成する為に「e(fx)clipse」アドインを入れる
http://www.efxclipse.org/p2-repos/releases/latest/
e(fx)clipse - install
e(fx)clipse - tooling
この2つをいれるよ

開発環境(NetBeansIDE編)

はじめ、eclipseでやっていたのですが、圧倒的にNetBeansが使いやすいので切り替えました。
つまり、さまざまのウィザードが充実しているし、ファイル新規作成時にある程度、道筋があるので、FlashBuilderのように使える。
eclipseに慣れていない場合は、NetBeansでいいのでは?と思いました。
https://netbeans.org/index_ja.html

JavaFX Scene Builderのパス設定

[ツール]>[オプション]>[Java]>[JavaFX]でパスを設定します(NetBeans再起動)。
設定すると、.fxmlを編集するときScene Builderが起動するようになります。

導入用サンプル

http://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm


いちおうどちらでも開発できるようになってよかった