android4.0 bug修改系列四

1、在图片中加入删除照片或者视频时,弹出对话框提示。

在packages/apps/Gallery2/src/com/android/gallery3d/ui/MenuExecutor.java中

 private boolean execute(
            DataManager manager, JobContext jc, int cmd, Path path) {

。。。。省略
        switch (cmd) {

把每张需要删除的照片都加入都list中
            case R.id.action_confirm_delete:
                Log.i("delete", "action_confirm_delete");
                        mycount++;
                        mypath=path;
                        mypaths.add(mypath);
                        mypath=null;
                break;

。。。。省略

}

  public void startAction(int action, int title, ProgressListener listener) {
        ArrayList<Path> ids = mSelectionManager.getSelected(false);


        Activity activity = (Activity) mActivity;
        if(title == R.string.delete)
        {
                mypaths=null;
                mypaths=new ArrayList<Path>();
                mycount=0;
                dialoginit(activity);显示对话框的工程中,已经运行了“把每张需要删除的照片都加入都list中”这部分
        }
        MediaOperation operation = new MediaOperation(action, ids, listener);
        mTask = mActivity.getThreadPool().submit(operation, null);
    }


新创一个函数

  private void dialoginit(Context context)
    {
        AlertDialog.Builder  deletedialog=null;
        Log.i("delete", "dialoginit");
        deletedialog=new AlertDialog.Builder(context);
                deletedialog.setMessage(context.getResources().getString(R.string.aler_context))
                .setTitle(context.getResources().getString(R.string.aler_title))
        .setIcon(android.R.drawable.ic_dialog_alert)
                .setPositiveButton(context.getResources().getString(R.string.aler_sure), new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                DataManager manager = mActivity.getDataManager();
                                for(int i=0;i<mycount;i++)
                                {
                                         manager.delete(mypaths.get(i));
                                         Log.i("delete", "delete--"+i);
                                }

                        }
                })
                .setNegativeButton(context.getResources().getString(R.string.aler_cancel), new DialogInterface.OnClickListener() {


                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                dialog.cancel();
                        }
                });
                AlertDialog alert = deletedialog.create();
                alert.show();

    }

2、在文件管理器中隐藏文件名

FileExplore/src/com/softwinner/explore/EventHandler.java中

 public void updateDirectory(ArrayList<String> content) {
                if(!mDataSource.isEmpty())
                        mDataSource.clear();


                for(String data : content)
                {

隐藏文件名为navione和autonavi50的文件或者文件夹
                        if(data.toLowerCase().contains("navione"))
                        {


                        }
                        else if(data.toLowerCase().contains("autonavi50"))
                        {


                        }

                        else
                        {
                                mDataSource.add(data);
                        }


                }


                mDelegate.notifyDataSetChanged();
        }

3,、把bitmap转化为一个文件


以下函数是我在系统music里面使用的一个函数,是为了得到当前播放的音乐的专辑封面
  private void getbitmap()
  {
          Log.i("music", "getArtwork");
         Intent bitmapintent=new Intent();
       
Bitmap mybitmap=MusicUtils.getArtwork(getApplicationContext(), getAudioId(), getAlbumId(), true);这个是music代码中的一个方法。
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        if(mybitmap!=null)
        {
                mybitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
                byte[] mybyte=baos.toByteArray();
                BufferedOutputStream stream = null;


                try {
                                File file=null ;
                 file = new File("/mnt/sdcard/mybitmap");


                  FileOutputStream fstream = new FileOutputStream(file);
                  stream = new BufferedOutputStream(fstream);
                  stream.write(mybyte);
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                  if (stream != null) {
                      try {
                          stream.close();
                      } catch (IOException e1) {
                          e1.printStackTrace();
                      }
                  }
              }
          }
        }

4、加入开机音乐

index 460cf77.. f1d89ef 100755 (executable)
@@ -448,7 +448,7 @@  service media /system/bin/mediaserver
     group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc
     ioprio rt 4
 
-service bootanim /system/bin/bootanimation
+service bootanim /system/bin/bootanimation test.mp3
     class main
     user graphics
     group graphics
index 7d39912.. a538983 100644 (file)
@@ -15,7 +15,8 @@  LOCAL_SHARED_LIBRARIES := \
        libskia \
     libEGL \
     libGLESv1_CM \
-    libgui
+    libgui \
+       libmedia
 
 LOCAL_C_INCLUDES := \
        $(call include-path-for, corecg graphics)
index 154dbb8.. e2baca1 100644 (file)
 #include <GLES/gl.h>
 #include <GLES/glext.h>
 #include <EGL/eglext.h>
+#include <media/mediaplayer.h>
 
 #include "BootAnimation.h"
 
 #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
 #define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
 
+extern char *gBootRing;
+
 namespace android {
 
 // ---------------------------------------------------------------------------
@@ -67,6 +70,15 @@  BootAnimation::BootAnimation() : Thread(false)
 BootAnimation::~BootAnimation() {
 }
 
+void playRingWhenBootimg(){
+    char ringFilePath[64] = "/system/media/audio/notifications/";
+    sp<MediaPlayer> mp = new MediaPlayer();
+    strcat(ringFilePath, gBootRing);
+    mp->setDataSource(ringFilePath,NULL);
+    mp->prepare();
+    mp->start();
+}
+
 void BootAnimation::onFirstRef() {
     status_t err = mSession->linkToComposerDeath(this);
     LOGE_IF(err, "linkToComposerDeath failed (%s) ", strerror(-err));
@@ -308,6 +320,8 @@  bool BootAnimation::android()
     initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
     initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
 
+    playRingWhenBootimg();
+
     // clear screen
     glShadeModel(GL_FLAT);
     glDisable(GL_DITHER);
@@ -369,6 +383,8 @@  bool BootAnimation::android()
 
 bool BootAnimation::movie()
 {
+    playRingWhenBootimg();
+
     ZipFileRO& zip(mZip);
 
     size_t numEntries = zip.getNumEntries();
index 5f8b744.. 017cb16 100644 (file)
 
 using namespace android;
 
+char *gBootRing = "Pollux.ogg";
+
 // ---------------------------------------------------------------------------
 
 int main(int argc, char** argv)
@@ -48,6 +50,10 @@  int main(int argc, char** argv)
     property_get("debug.sf.nobootanimation", value, "0");
     int noBootAnimation = atoi(value);
     LOGI_IF(noBootAnimation,  "boot animation disabled");
+
+    if (argc > 1)
+        gBootRing = argv[1];
+
     if (!noBootAnimation) {
 
         sp<ProcessState> proc(ProcessState::self());


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值