ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

iPhone、iPadの壁紙を自動的に切り替える WallpaperAutoChanger

      2016/03/16

iPadは壁紙の表示をサポートしているし、また画面が大きいので、壁紙を自動で切り替えるソフトウェアがあれば楽しいのに。
iOS 4.0は折角壁紙をサポートしているのに、1枚を表示するだけではつまらない。
それを実現するBossPaperがあるけれども、iPad、iOS4.0対応がまだ。
自分で作っても簡単そうなので、そして簡単なものだったら作れそうだったので作ってみました。

インストール後、「設定>WallpaperAutoChanger」で所定の設定を済ませると、自動で壁紙が切り替わるようになります。(続きは[MORE]から)

解説

デフォルトでは/var/mobile/Media/Wallpapersにある画像を、次々と壁紙として設定していきます。

上記ディレクトリに、壁紙として設定したい画像をコピーしてください。現状jpgのみ扱うようになっています。

巨大な画像を使うと無駄にメモリを食うと思われるので、最適な(iPadなら1024×1024、iPhoneなら320×480)に近しい大きさの画像を使うようにしてください。

壁紙の切り替え順について

流れとしては以下のようになっています。

1.壁紙ディレクトリをスキャンしてリスト作成

2.リスト順に切り替え

3.リストを消化し終わると1.へ戻る

順序は一定ですが、リストはメモリ上に保持(ディスクには書き出していない)しているので、respringするとリストの初めからになります。

ランダム表示への要望をいただいております。
いつか手を付けますが、利用者が少ないソフトウェアなので優先度は低いです。

既知の問題

  • iOS4.2.1において、フォルダを開くと元々の壁紙が表示されてしまう→iOS4.2.1からはやっかいな問題があり、仕様ということにさせてください0.6で対応。
  • インストール後、リスプリングでは正常に動作すると思いますが、リブートするとアイコンが小さく、まるでiPhoneのようになる症状が出ると思います。リスプリングすると戻りますが、アイコンの並びが崩れてしまいます。まだ症状が出ていない方は、リブートする前に本ソフトをアンインストールしてください。この問題の修正まで、リポジトリからは削除します。
  • 上記の不具合を0.2-1で修正しました。ヒントをいただいた @tom_go さんありがとうございました。原因は、イニシャライザの中で[[[UIDevice currentDevice] systemVersion] floatValue]を呼び出していることでした。SpringBoardに適用するMobile Substrateのイニシャライザ中でそのメソッドを使うと、このような現象が起こるようです。SpringBoardの初期化の途中でiPadがiPadであることが確定するのに、その前に上記メソッドを呼び出すと、デフォルト値であるiPhoneの値が適用されてしまう、といったようなことではないかと推測します。つまり、SpringBoardに適用するMobile Substrateの中に、これと同じことをしているものがほかにもあると、同様の不具合は出続けることになります。同様の症状がまだ出るようなら、Mobile Substrateを一つずつオフにしていくことで特定する、というのが解決への近道になるでしょう。
  • アプリケーションが起動中でも、裏でせっせと壁紙の切り替えをしています(Interval Timerがオンの場合)。アプリケーションのパフォーマンスに影響を与えるかもしれません。

履歴

  • 0.7-1: 2011.02.22 iOS 4.1以下で動かなくなっていたのを修正
  • 0.6-1: 2011.02.21 iOS 4.2.1での動作を改善。iPadでの動作を確認
  • 0.5-1: 2011.02.18 iOS 4.2.1対応(iPadでは未テスト)
  • 0.4-3: 2010.08.04 iPhone OS 3.2.1対応パッケージ修正
  • 0.4-2: 2010.07.24 初期設定項目名などの修正
  • 0.4-1: 2010.07.24 iOS 4.0.xでも動くようになりました
  • 0.3-1: 2010.07.10 「設定>明るさ/壁紙>壁紙」で「両方に設定」をした場合に機能しなくなる問題に対処。ただし、ロック中の画面の壁紙も自動切り替えできるようになったわけではありません
  • 0.2-2: 2010.07.09 設定のIntervalの選択肢を60minまで増やした
  • 0.2-1: 2010.07.09 再起動後、アイコンがiPhoneサイズになってしまうことの修正
  • 0.1-1: 2010.07.07 初版

動作環境

iPhone OS 3.2以上にあるOSの機能を利用しているので、それ以下のバージョンでは動きません。

  • iPhone OS 3.2
  • iPhone OS 3.2.1
  • iPhone OS 4.0
  • iPhone OS 4.0.1
  • iPhone OS 4.1
  • iPhone OS 4.2.1

インストール

New野良リポジトリに置いておきました。

「WallpaperAutoChanger」で検索してください。

無保証です。何の保証もありません。それでもよければ使ってみてください。

設定項目解説

「設定>WallpaperAutoChanger」の項目の解説をします。

  • Interval Timer: オンにすると、Intervalの間隔を置いて壁紙が自動的に切り替わっていきます
  • Change When App Exit: オンにすると、アプリケーションの終了時に壁紙が切り替わるようになります。ただし、Backgrounderが有効なときは、バックグラウンドに回すだけでは切り替わりません
  • Change When Unlock: オンにすると、ロック画面解除時に壁紙が切り替わるようになります
  • Pool Directory: 本ソフトウェアの処理対象にする画像を入れておくディレクトリを指定します。拡張子jpgのもののみを扱います。巨大な画像はトラブルの元なので避けてください
  • Interval: 自動更新の間隔です
  • Fade Duration:  壁紙切り替え時のフェードのスピードです。単位は秒
  • Dimming: 右にスライドすると、壁紙のトーンダウンの度合いが強くなる=暗くなっていきます

補足説明

このWallpaperAutoChangerは、OS標準の壁紙表示のメソッドをそのまま利用、また、切り替え時も同時に1枚の画像しか表示しないので、OS標準状態とほぼメモリ使用量は変わらないと思います。

WinterBoard、BossPaper(いずれもiPadに対応した場合を想定)などと比較した場合、ほぼメモリの使用量がOS標準の壁紙表示機能と変わらない点がWallpaperAutoChangerのメリットになると思います。

ヘボい自分の作ったソフトウェアなので、メモリリークなどを起こしているかもしれず、もくろみ通りにいっていると保証はできませんが。

 - iPad, Jailbreak, ガジェット

dropbox_sale_banner evernote_sale_banner_03