0

I am trying to build a live wallpaper and want to pass a edittext string to wallpaperservice from MainActivity. Is there any method to pass the edittext value at any time and it draw on the canvas.

this is my MainActiviy

 public class Main extends Activity implements OnClickListener {

private EditText et;
private Button setWall;
private TextView tv;
public String passString = "";

ConsoleWallpaper consol;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);

    consol = new ConsoleWallpaper();

    et = (EditText) findViewById(R.id.editText1);
    setWall = (Button) findViewById(R.id.button1);

    setWall.setOnClickListener(this);

}

@Override
public void onClick(View v) {

    switch (v.getId()) {

    case R.id.setWall:

        break;

    }

}

}

and this is extends WallpaperService where i want to pass values every time on button click.

public class MyWallpaper extends WallpaperService {
public static final String SHARED_PREFS_NAME = "WallpaperSettings";
private final Handler mHandler = new Handler();



public String receivedString= "";


private Canvas c;

MainActivity main = new MainActivy();

Handler testHandler = new Handler();

@Override
public void onCreate() {



    super.onCreate();
}

@Override
public void onDestroy() {
    super.onDestroy();
}

@Override
public Engine onCreateEngine() {


    return new TextEngine();
}

class TextEngine extends Engine implements
        SharedPreferences.OnSharedPreferenceChangeListener {

    private int mCanvasHeight = 1;
    // private int mCanvasWidth = 1;

    private int mOffsetTop = 100;
    private int mOffsetLeft;



    private final Paint mPaint = new Paint();

    private int iTo = 1;
    private int iFrom = 0;
    private String mSpeed = "normal";
    private int iTimes;

    private String mText; 
    private String receivedName;

    private final Runnable mDrawCube = new Runnable() {
        public void run() {


            drawFrame();
        }
    };
    private boolean mVisible;

    private SharedPreferences mPrefs;

    TextEngine() {
        Typeface typeface = Typeface.createFromAsset(getAssets(),
                "fonts/Geo-Regular.ttf");



        final Paint paint = mPaint;

        paint.setTextSize(18);
        paint.setTypeface(typeface);
        paint.setColor(0xff00ff00);
        paint.setAntiAlias(true);

        mPrefs = ConsoleWallpaper.this.getSharedPreferences(
                SHARED_PREFS_NAME, 0);
        mPrefs.registerOnSharedPreferenceChangeListener(this);
        onSharedPreferenceChanged(mPrefs, null);
    }

    public void onSharedPreferenceChanged(SharedPreferences prefs,
            String key) {
        mSpeed = prefs.getString("speed", "normal");
    }

    @Override
    public void onCreate(SurfaceHolder surfaceHolder) {
        super.onCreate(surfaceHolder);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mHandler.removeCallbacks(mDrawCube);
    }

    @Override
    public void onVisibilityChanged(boolean visible) {
        mVisible = visible;

        if (visible) {
            drawFrame();
        } else {
            mHandler.removeCallbacks(mDrawCube);
        }
    }

    @Override
    public void onSurfaceChanged(SurfaceHolder holder, int format,
            int width, int height) {
        super.onSurfaceChanged(holder, format, width, height);



        // mCanvasWidth = width;
        mCanvasHeight = height;
        mPaint.setTextSize(width / 30);
        // mOffsetLeft = width / 30;
        mOffsetLeft = 0;
        drawFrame();
    }

    @Override
    public void onSurfaceCreated(SurfaceHolder holder) {
        super.onSurfaceCreated(holder);
    }

    @Override
    public void onSurfaceDestroyed(SurfaceHolder holder) {
        super.onSurfaceDestroyed(holder);
        mVisible = false;



        mHandler.removeCallbacks(mDrawCube);


    }

    @Override
    public void onOffsetsChanged(float xOffset, float yOffset, float xStep,
            float yStep, int xPixels, int yPixels) {
        drawFrame();
    }


    public void drawFrame() {
        final SurfaceHolder holder = getSurfaceHolder();



         c = null;
        try {
            c = holder.lockCanvas();
            if (c != null) {
                // draw something
                onDraw(c);
            }
        } finally {
            if (c != null)
                holder.unlockCanvasAndPost(c);
        }

        // Reschedule the next redraw
        mHandler.removeCallbacks(mDrawCube);
        if (mVisible) {
            mHandler.postDelayed(mDrawCube, 1000 / 25);
        }
    }

    void onDraw(Canvas c) {
        c.save();


        mText = receivedString";



        // draw
        String text = mText.substring(iFrom, iTo);
        String[] Strings = text.split("#");
        mPaint.setTextSize(40);
        for (int i = 0; i < Strings.length; i++) {
            c.drawText(Strings[i], mOffsetLeft, mOffsetTop, mPaint);
            mOffsetTop += mPaint.getTextSize();
            if (mOffsetTop > mCanvasHeight)
                reset(c);
        }
        iFrom = 0;
        mOffsetTop = 100;

        int t;
        if (mSpeed.equalsIgnoreCase("slow"))
            t = 5;
        else
            t = 1;

        if (iTimes % t == 0) {
            if (mSpeed.equalsIgnoreCase("fast"))
                iTo++;
            iTo++;
            iTimes = 0;
        }
        iTimes++;

        if (iTo > mText.length()) {
            iFrom = 0;
            iTo = 1;
            reset(c);
        }
        c.restore();
    }




    void reset(Canvas c) {
        mOffsetTop = 100;
        Paint paint = new Paint();
        paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
        c.drawPaint(paint);
    }

}

}

  • 2
    Experts will be able to help if some of the code you have tried is posted along with the question. – Nagama Inamdar Mar 15 '14 at 09:12
  • Can't you pass a string to your `wallpaperservice`. Get the text from `EditText` and passed it into your service. – UjjawalKr Mar 15 '14 at 09:14
  • this is the main problem i don't know how can i pass it to extends WallpaperService, bundle methods kinda not working for me and still no text change is showing in the live wallpaper – imSagittarius Mar 15 '14 at 09:35

0 Answers0